สาเหตุของ ERROR 1064 (42000)
ข้อผิดพลาดนี้เกิดจาก **Syntax Error** โดยเฉพาะเมื่อ:
- ใช้ตัวอักษรพิเศษในชื่อฐานข้อมูล (เช่น ขีดกลาง
-, ช่องว่าง) - ไม่ใช้ Backtick (
`) ครอบชื่อที่มีตัวอักษรพิเศษ - Syntax ผิดปกติในคำสั่ง SQL
ตัวอย่างที่ทำให้เกิด Error
mysql> CREATE DATABASE customer-tracker;
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 '-tracker' at line 1
ตัวอักษร - ถูกตีความว่าเป็นตัวลบ (Minus Operator) ไม่ใช่ส่วนหนึ่งของชื่อ
วิธีแก้ไข
วิธี 1: ใช้ Backtick ครอบชื่อ (แนะนำ)
mysql> CREATE DATABASE `customer-tracker`;
Query OK, 1 row affected (0.21 sec)
วิธี 2: หลีกเลี่ยงตัวอักษรพิเศษ (Best Practice)
mysql> CREATE DATABASE customer_tracker;
Query OK, 1 row affected (0.18 sec)
วิธี 3: ไม่ใช้ Backtick (ถ้าชื่อไม่มีตัวพิเศษ)
mysql> CREATE DATABASE mydatabase;
Query OK, 1 row affected (0.15 sec)
กฎการตั้งชื่อใน MySQL (Identifier Rules)
| อนุญาต | ไม่อนุญาต (ต้องใช้ Backtick) |
|---|---|
| อักษร, ตัวเลข, _ (underscore) | ช่องว่าง, -, ., @, #, $, %, ^, &, *, (, ) |
| ขึ้นต้นด้วยตัวเลขได้ (แต่ต้อง Backtick) | คำสงวน (Reserved Words) เช่น SELECT, TABLE, INDEX |
แนวทางปฏิบัติที่ดี (Best Practices)
- ใช้เฉพาะ
a-z, 0-9, _(lowercase + underscore) - หลีกเลี่ยงคำสงวน (Reserved Keywords)
- ใช้ชื่อที่อธิบายความหมายได้ (Descriptive Names)
- ใช้ Backtick เสมอเพื่อความปลอดภัย:
`table_name`