??首先,不推薦使用MySQL的關鍵詞來作為字段名,但是有時候的確沒有注意,或者因為之前就這么寫了,沒辦法,那怎么辦呢?
- 方法1,改字段名,改了肯定就沒問題了。這個就不細說了。
- 方法2,使用引號`來處理。
??下面就詳細的說明一下怎樣使用方法2來處理。
1. 創(chuàng)建測試表
CREATE TABLE `test` (
`maxvalue` int(10) DEFAULT NULL,
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
??上面的測試表是MySQL自動生成的DDL,其實從上面就可以看出,MySQL的引號內(nèi)是說明絕對的保證大小寫和當做普通字符串處理。
??這里使用了maxvalue這個不常用的關鍵詞作為字段名,一樣違反了通常常規(guī)的命名規(guī)則,MySQL無法很好的識別。

Test表結(jié)構
2. 錯誤問題現(xiàn)象重現(xiàn)
??查詢SQL:
SELECT t.id, t.maxvalue FROM test t

SELECT查詢結(jié)果
??在navicat中可以正常執(zhí)行,沒有任何問題。
??然后再運行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的引號“`”,記住不是普通的英文單引號“'”,是傾斜的上撇,不是豎直的上撇。
??鍵盤輸入方式為鍵盤英文字母鍵上面的數(shù)字鍵1最前面的那個波浪線和頓號組成的鍵。也就是ESC下面,TAB鍵上面的按鍵。
INSERT INTO test(`maxvalue`, id) VALUES (10, 1);

修改后可以正常執(zhí)行的測試結(jié)果
??這樣就可以正常運行了。