Knowledge
MySQL ERROR 1064: SQL syntax error
#Databases
Error 1064 means MySQL could not parse your query. The message points at exactly where parsing failed, the cause is usually a reserved word, a typo, or a quoting problem.
Published by Mark van Eijk on June 23, 2026 · 1 minute read
- About the error
- Why do I see this error
- Solution
- Read the "near" snippet
- Check quoting
- When it comes from application code
About the error
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '...' at line 1
The crucial part is the text after near. MySQL prints the query starting from the point where it got confused, so the problem is almost always at or just before that snippet, not somewhere else.
Why do I see this error
- A reserved word used as a table or column name without backticks (
order,group,rank,key,desc). - A typo in a keyword (
SELCT,FORM,WHEREplaced wrong). - A missing or mismatched quote or parenthesis.
- A stray trailing comma before
FROMor a closing bracket. - Mixing in another SQL dialect's syntax that MySQL doesn't accept.
Solution
Read the "near" snippet
If you see near 'order (id int...', the word right after near (order) is the offender. ORDER is reserved, so quote it with backticks:
CREATE TABLE `order` (
`id` INT PRIMARY KEY,
`rank` INT
);
Backticks let you use reserved words as identifiers, though renaming the column to something non-reserved is cleaner long term.
Check quoting
Use single quotes for string values and backticks for identifiers, never the other way around:
-- wrong
SELECT * FROM users WHERE name = "O'Brien";
-- right
SELECT * FROM users WHERE name = 'O\'Brien';
When it comes from application code
If the query is built by your app, the syntax error usually means a variable was interpolated into the SQL unescaped, which is also a SQL injection risk. Use parameter binding instead of string concatenation. In Laravel, prefer the query builder or bindings:
DB::select('select * from users where email = ?', [$email]);
This both fixes the syntax problem and closes the injection hole.
Subscribe to our newsletter
Do you want to receive regular updates with fresh and exclusive content to learn more about web development, hosting, security and performance? Subscribe now!
Related articles
Stream MySQL backup directly to S3 bucket
Error 1064 means MySQL could not parse your query. The message points at exactly where parsing failed, the cause is usually a reserved word, a typo, or a quoting problem.
Export MySQL database using command line
Error 1064 means MySQL could not parse your query. The message points at exactly where parsing failed, the cause is usually a reserved word, a typo, or a quoting problem.