Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Giải quyết lỗi dùng từ khóa dành riêng (reserved word) làm tên bảng/cột MySQL


MySQL báo lỗi ERROR 1064 (42000) khi dùng từ khóa dành riêng (reserved word) làm tên bảng hoặc cột không có backtick.

Các trường hợp lỗi thường gặp

Trường hợp 1: Tên bảng là từ khóa

mysql> CREATE TABLE insert (Id INT);
ERROR 1064 (42000): ... near 'insert (Id int)' at line 1

Trường hợp 2: Tên cột là từ khóa

mysql> CREATE TABLE Customers (Add INT);
ERROR 1064 (42000): ... near 'Add int)' at line 3

Giải pháp: Sử dụng backtick (`)

CREATE TABLE `insert` (`Add` INT);
Query OK, 0 rows affected

Backtick báo cho MySQL biết đây là identifier (định danh), không phải keyword.

Một số từ khóa dành riêng phổ biến

Danh sách đầy đủ: MySQL Reserved Keywords

Khuyến nghị tốt nhất

  • Tránh dùng từ khóa làm tên bảng/cột (đặt tên có ý nghĩa: insert_time, address, user_key).
  • Nếu bắt buộc: luôn dùng backtick `table_name`, `column_name`.
  • Cấu hình sql_mode=ANSI_QUOTES cho phép dùng dấu ngoặc kép "name" thay backtick (chuẩn SQL).

Ví dụ thực tế

-- Sai
CREATE TABLE order (id INT, date DATE);

-- Đúng
CREATE TABLE `order` (id INT, `date` DATE);
-- Hoặc tốt hơn:
CREATE TABLE orders (id INT, order_date DATE);
Nhóm Từ khóa (mẫu)
DML SELECT, INSERT, UPDATE, DELETE, REPLACE
DDL CREATE, ALTER, DROP, TRUNCATE, RENAME
Constraint PRIMARY, KEY, FOREIGN, UNIQUE, CHECK, INDEX
Logic AND, OR, NOT, IN, LIKE, BETWEEN, IS, NULL
Khác ORDER, GROUP, BY, LIMIT, OFFSET, JOIN, UNION