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无法很好的识别。
Test表结构
2. 错误问题现象重现
查询SQL:
SELECT t.id, t.maxvalue FROM test t
SELECT查询结果
在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);
修改后可以正常执行的测试结果
这样就可以正常运行了。
标签:10,maxvalue,转帖,MySQL,test,id,字段名 From: https://www.cnblogs.com/jinanxiaolaohu/p/18175568