https://www.jianshu.com/p/50e59feb3e83
首先,不推薦使用MySQL的關鍵詞來作爲字段名,但是有時候的確沒有注意,或者因爲之前就這麼寫了,沒辦法,那怎麼辦呢?
- 方法1,改字段名,改了肯定就沒問題了。這個就不細說了。
- 方法2,使用引號`來處理。
下面就詳細的說明一下怎樣使用方法2來處理。
1. 創建測試表
CREATE TABLE `test` (
`maxvalue` int(10) DEFAULT NULL,
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上面的測試表是MySQL自動生成的DDL,其實從上面就可以看出,MySQL的引號內是說明絕對的保證大小寫和當做普通字符串處理。
這裏使用了maxvalue這個不常用的關鍵詞作爲字段名,一樣違反了通常常規的命名規則,MySQL無法很好的識別。
2. 錯誤問題現象重現
查詢SQL:
SELECT t.id, t.maxvalue FROM test t
在navicat中可以正常執行,沒有任何問題。
然後再運行insert語句:
INSERT INTO test(maxvalue, id) VALUES (10, 1);
提示下面的錯誤:
INSERT INTO test(maxvalue, id) VALUES (10, 1)
> 1064 - 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 'maxvalue, id) VALUES (10, 1)' at line 1
> 時間: 0.02s
提示錯誤,但是沒有明顯的說明是關鍵詞不能識別。
3. SQL語句中的解決辦法
增加引號,使用MySQL的引號“`”,記住不是普通的英文單引號“'”,是傾斜的上撇,不是豎直的上撇。
鍵盤輸入方式爲鍵盤英文字母鍵上面的數字鍵1最前面的那個波浪線和頓號組成的鍵。也就是ESC下面,TAB鍵上面的按鍵。
INSERT INTO test(`maxvalue`, id) VALUES (10, 1);
這樣就可以正常運行了。