สาเหตุและวิธีแก้ ERROR 1064 ใกล้ ')'
Error นี้มักเกิดจาก Comma (,) คงอยู่ท้ายคอลัมน์สุดท้าย ในคำสั่ง CREATE TABLE
โค้ดที่ผิด (มี Comma ท้ายคอลัมน์ event)
mysql> CREATE TABLE DemoTable1492 (
-> timestamp TIMESTAMP,
-> event INT,
-> ); -- <-- Comma ค้างอยู่ที่นี่!
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 5
โค้ดที่ถูกต้อง (ลบ Comma ท้ายออก)
mysql> CREATE TABLE DemoTable1492 (
-> timestamp TIMESTAMP,
-> event INT
-> );
Query OK, 0 rows affected (0.44 sec)
ทดสอบ INSERT และ SELECT
mysql> INSERT INTO DemoTable1492 VALUES(NOW(), 101); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO DemoTable1492 VALUES(NOW() + INTERVAL 3 MONTH, 102); Query OK, 1 row affected (0.14 sec) mysql> SELECT * FROM DemoTable1492; +---------------------+-------+ | timestamp | event | +---------------------+-------+ | 2019-10-06 10:56:53 | 101 | | 2020-01-06 10:57:07 | 102 | +---------------------+-------+
สาเหตุอื่นๆ ที่ทำให้เกิด ERROR 1064
| สาเหตุ | ตัวอย่าง | แก้ไข |
|---|---|---|
| Comma คงท้ายคอลัมน์สุดท้าย | col INT, | ลบ Comma ออก |
| ใช้ Reserved Word เป็นชื่อคอลัมน์/ตาราง | CREATE TABLE select (id INT) | ใช้ Backtick: CREATE TABLE \`select\` (id INT) |
| Syntax ผิดในคำสั่งซับซ้อน | JOIN, SUBQUERY ผิดรูปแบบ | ตรวจสอบวงเล็บ, คีย์เวิร์ด, คอมมา |
| Quote ผิด (Smart quotes) | 'value' (curly quotes) | ใช้ Straight quotes: 'value' |
เคล็ดลับการ Debug
- อ่านข้อความ Error:
near ')'บอกตำแหน่งประมาณ - ตรวจสอบบรรทัดก่อนและหลังตำแหน่งที่ Error บอก
- ใช้ IDE/Editor ที่มี Syntax Highlighting (VS Code, DataGrip, Workbench)
- แบ่งคำสั่งยาวเป็นหลายบรรทัดเพื่ออ่านง่าย