首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 保留字踩坑記:用 describe 作列名導致 INSERT 報錯

     編輯:MySQL 綜合教學

現象

今天寫程序建表時,將一列命名為 describe,執行 INSERT 語句卻報語法錯誤。經排查發現 DESCRIBE 是 MySQL 保留關鍵字 (同 DESC,用於 DESCRIBE table_name 或 SHOW COLUMNS)。

解決方案

使用反引號 (backtick) 包裹標識符:

INSERT INTO `table_name` (`describe`) VALUES ('some description');

反引號鍵位於鍵盤左上角 Esc 下方、Tab 上方 (與波浪號 ~ 同鍵)。

最佳實踐建議

  1. 避免使用保留字 作為表名、列名、別名。常見保留字:SELECT, INSERT, UPDATE, DELETE, WHERE, ORDER, GROUP, BY, DESC, DESCRIBE, INDEX, KEY, PRIMARY, UNIQUE, FOREIGN, REFERENCES, CHECK, CONSTRAINT, TRIGGER, VIEW, PROCEDURE, FUNCTION, TRANSACTION, COMMIT, ROLLBACK, LOCK, UNLOCK, PARTITION, TABLESPACE, ENGINE, CHARSET, COLLATE 等。
  2. 統一加反引號:在 ORM、代碼生成工具、遷移腳本中,對所有標識符 (庫、表、列、索引、別名) 強制加反引號,消除保留字衝突風險。
  3. 命名規範:業務列名建議加前綴 (如 col_desc, user_desc) 或使用下劃線分隔語義單詞,提高可讀性並避開關鍵字。

相關參考

MySQL 保留字完整列表:MySQL 8.0 Keywords and Reserved Words

關於 DESCRIBE 用法詳解:DESCRIBE 命令詳細說明

總結

一個反引號解決保留字衝突,但源頭規避才是長久之計。建立團隊命名規範,配合自動化工具加反引號,能省去無數莫名其妙的語法錯誤排查時間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved