【MySQL】字段名与关键字冲突解决办法

  首先,不推荐使用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);
修改后可以正常执行的测试结果

  这样就可以正常运行了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容