为何无法向MySQL插入数据?ERROR 1064语法错误求助
问题根源:中文全角括号在搞鬼!
兄弟,我一眼就瞅出你卡了一下午的问题出在哪——你语句里的中文全角括号!
先看你第一次执行的INSERT语句:
INSERT INTO goods_table (name,kind,price,discount, store ,detail) VALUES("abc","A",3960,10,100,'adf');
注意字段列表最后的右括号)——这是中文全角符号,MySQL完全不识别这种括号!你第二次修改后的语句:
insert into `goods_table` (`name`,`kind`,`price`,`discount`,`store`) values ('abc','A',3960,10,100);
同样踩了同一个坑:store后面的右括号还是中文的),不是英文半角的),这才是反复报语法错误的核心原因!
你最后成功的语句,本质是把中文括号换成了英文半角括号,双引号只是巧合——MySQL在默认配置下允许用双引号包裹字符串(只要sql_mode没开启ANSI_QUOTES),真正解决问题的是替换了括号。
正确写法验证
把所有括号换成英文半角的,不管用单引号还是双引号都能正常执行:
单引号版本(SQL标准写法,推荐)
INSERT INTO goods_table (name, kind, price, discount, store, detail) VALUES('abc', 'A', 3960, 10, 100, 'adf');
双引号版本(MySQL默认支持)
INSERT INTO goods_table (name, kind, price, discount, store, detail) VALUES("abc", "A", 3960, 10, 100, "adf");
避坑小技巧
- 写SQL时尽量保持英文输入法状态,尤其是括号、逗号、引号这类符号,很容易不小心切到中文输入法打错
- 遇到语法错误时,重点看报错提示里的
near 'xxx'部分,你两次报错都指向括号附近,其实已经给了明确线索啦!
内容的提问来源于stack exchange,提问作者doUWannaBuildASnowMan




