Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไขการใช้เครื่องหมายคำพูด ERROR 1064 (42000):คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชันเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่ถูกต้องหรือไม่


ใน MySQL คุณสามารถใช้เครื่องหมายคำพูดได้สองแบบคือ เครื่องหมายย้อนกลับ และอีกแบบคือ เครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายคำพูดคู่ ในกรณีนี้ คุณอาจใช้เครื่องหมายคำพูดเดี่ยวกับชื่อคอลัมน์ นั่นคือสาเหตุที่คุณได้รับข้อผิดพลาด คุณต้องใช้สัญลักษณ์ย้อนกลับ (` `) แทนเครื่องหมายคำพูดเดี่ยว สามารถใช้ Backtick กับชื่อคอลัมน์ในขณะที่ single quotes สามารถใช้สำหรับสตริงได้

เพื่อให้เข้าใจข้อผิดพลาดข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง Backtick_SymbolDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(20), -> FileName varchar(30), -> PRIMARY KEY(Id) -> );Query OK, 0 แถวที่ได้รับผลกระทบ (0.81 วินาที)

ข้อผิดพลาดเกิดขึ้นหากเราใช้เครื่องหมายคำพูดเดี่ยวแทนสัญลักษณ์ย้อนกลับรอบคอลัมน์ดังที่แสดงด้านล่าง ในที่นี้ เราได้แทรกค่าด้วยเครื่องหมายคำพูดเดี่ยว และข้อผิดพลาดสามารถมองเห็นได้ -

mysql> แทรกลงใน Backtick_SymbolDemo(`Name`,'FileName') values('John','Sum.cpp');ข้อผิดพลาด 1064 (42000):คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชันเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่ถูกต้องเพื่อใช้ใกล้กับค่า ''FileName') ('John','Sum.cpp')' ที่บรรทัด 1

เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ ให้ใช้สัญลักษณ์ backtick รอบชื่อคอลัมน์ทั้งหมด หรืออย่าใช้ทั้งเครื่องหมายย้อนกลับหรือเครื่องหมายคำพูดเดี่ยว

แบบสอบถามเพื่อแทรกเรกคอร์ดมีดังนี้ นี่คือการใช้สัญลักษณ์ backtick รอบชื่อคอลัมน์ทั้งสอง

mysql> แทรกลงใน Backtick_SymbolDemo(`Name`,`FileName`) values('John','Sum.cpp');ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)

นี่คือบันทึกการแทรกโดยไม่ต้องใช้สัญลักษณ์ย้อนกลับ แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน Backtick_SymbolDemo(Name,FileName) values('Larry','SocketProgram.java');Query OK, 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงใน Backtick_SymbolDemo(Name,FileName) ค่า('Mike ','UserCreationScript.sql');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.10 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก Backtick_SymbolDemo;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+---------+-----------------------+| รหัส | ชื่อ | ชื่อไฟล์ |+----+---------+-----------------------+| 1 | จอห์น | Sum.cpp || 2 | แลร์รี่ | SocketProgram.java || 3 | ไมค์ | UserCreationScript.sql |+----+-------+--------------------------------------+3 แถวในชุด (0.00 วินาที )