Computer >> Máy Tính >  >> Lập trình >> MySQL

Giải quyết việc sử dụng dấu ngoặc kép LỖI 1064 (42000):Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng?

Trong MySQL, bạn có thể sử dụng hai loại dấu ngoặc kép khác nhau là dấu ngoặc kép và một loại khác là dấu ngoặc kép hoặc dấu ngoặc kép. Trong trường hợp này, có thể bạn đang sử dụng dấu ngoặc kép cho tên cột, đó là lý do bạn gặp lỗi. Bạn cần sử dụng biểu tượng backtick (``) thay vì các dấu ngoặc kép. Backtick có thể được sử dụng với tên cột trong khi dấu ngoặc kép có thể được sử dụng cho chuỗi.

Để hiểu lỗi trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table Backtick_SymbolDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(20),  
   -> FileName varchar(30),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.81 sec)

Lỗi xảy ra nếu chúng ta sử dụng dấu ngoặc kép thay vì biểu tượng hình que ngược xung quanh cột như hình dưới đây. Ở đây, chúng tôi đã chèn một giá trị với các dấu ngoặc kép và lỗi có thể nhìn thấy -

mysql> insert into Backtick_SymbolDemo(`Name`,'FileName') values('John','Sum.cpp');
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 ''FileName') values('John','Sum.cpp')' at line 1

Để tránh lỗi này, hãy sử dụng biểu tượng dấu ngoặc kép xung quanh tên tất cả các cột hoặc không sử dụng cả dấu ngoặc kép hoặc dấu nháy đơn.

Truy vấn để chèn bản ghi như sau. Đây là cách sử dụng biểu tượng backtick xung quanh tên cả hai cột.

mysql> insert into Backtick_SymbolDemo(`Name`,`FileName`) values('John','Sum.cpp');
Query OK, 1 row affected (0.12 sec)

Đây là bản ghi chèn mà không sử dụng biểu tượng backtick. Truy vấn như sau -

mysql> insert into Backtick_SymbolDemo(Name,FileName) values('Larry','SocketProgram.java');
Query OK, 1 row affected (0.23 sec)
mysql> insert into Backtick_SymbolDemo(Name,FileName) values('Mike','UserCreationScript.sql');
Query OK, 1 row affected (0.10 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -

mysql> select *from Backtick_SymbolDemo;

Sau đây là kết quả -

+----+-------+------------------------+
| Id | Name  | FileName               |
+----+-------+------------------------+
|  1 | John  | Sum.cpp                |
|  2 | Larry | SocketProgram.java     |
|  3 | Mike  | UserCreationScript.sql |
+----+-------+------------------------+
3 rows in set (0.00 sec)