??首先遥椿,不推薦使用MySQL的關(guān)鍵詞來作為字段名基矮,但是有時(shí)候的確沒有注意淆储,或者因?yàn)橹熬瓦@么寫了,沒辦法家浇,那怎么辦呢遏考?
- 方法1,改字段名蓝谨,改了肯定就沒問題了灌具。這個(gè)就不細(xì)說了。
- 方法2譬巫,使用引號(hào)`來處理咖楣。
??下面就詳細(xì)的說明一下怎樣使用方法2來處理。
1. 創(chuàng)建測(cè)試表
CREATE TABLE `test` (
`maxvalue` int(10) DEFAULT NULL,
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
??上面的測(cè)試表是MySQL自動(dòng)生成的DDL芦昔,其實(shí)從上面就可以看出诱贿,MySQL的引號(hào)內(nèi)是說明絕對(duì)的保證大小寫和當(dāng)做普通字符串處理。
??這里使用了maxvalue這個(gè)不常用的關(guān)鍵詞作為字段名咕缎,一樣違反了通常常規(guī)的命名規(guī)則珠十,MySQL無法很好的識(shí)別。
2. 錯(cuò)誤問題現(xiàn)象重現(xiàn)
??查詢SQL:
SELECT t.id, t.maxvalue FROM test t
??在navicat中可以正常執(zhí)行凭豪,沒有任何問題焙蹭。
??然后再運(yùn)行insert語句:
INSERT INTO test(maxvalue, id) VALUES (10, 1);
??提示下面的錯(cuò)誤:
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
> 時(shí)間: 0.02s
??提示錯(cuò)誤,但是沒有明顯的說明是關(guān)鍵詞不能識(shí)別嫂伞。
3. SQL語句中的解決辦法
??增加引號(hào)孔厉,使用MySQL的引號(hào)“`”,記住不是普通的英文單引號(hào)“'”帖努,是傾斜的上撇撰豺,不是豎直的上撇。
??鍵盤輸入方式為鍵盤英文字母鍵上面的數(shù)字鍵1最前面的那個(gè)波浪線和頓號(hào)組成的鍵拼余。也就是ESC下面污桦,TAB鍵上面的按鍵。
INSERT INTO test(`maxvalue`, id) VALUES (10, 1);
??這樣就可以正常運(yùn)行了匙监。