龙空技术网

MySQL报错找不到问题?可能是你的SQL用了关键字

编程珠玑 159

前言:

现在看官们对“mysql中关键字”大约比较着重,看官们都想要了解一些“mysql中关键字”的相关内容。那么小编也在网络上汇集了一些有关“mysql中关键字””的相关知识,希望你们能喜欢,大家一起来学习一下吧!

现在使用navicat图形界面或者Hibernate做映射生成表的时候,渐渐的会忽视掉关键字这个问题,而后续也会不断的产生错误提示,一遍遍的查询代码无果,甚至开始怀疑人生,但是其实很多情况下只是使用了保留字而已,因此在设计数据库之初便要尽量的规避关键字和保留字。

但是这里要提一下的是mysql是支持使用关键字做字段名的,但是针对保留关键字是必须要加引用。mysql官网提供了三个例子是可以很好的说明这些的。

interval begin、end都是关键字,interval是保留关键字,因此会报错mysql> CREATE TABLE interval (begin INT, end INT);ERROR 1064 (42000): You have an error in your SQL syntax ...near 'interval (begin INT, end INT)'

当给interval加上引用''后便可以正确执行该sql语句,也不会报begin、end的错,因为这是mysql允许的,但是不推荐这个用法,谁知道升级之后会不会变成保留字。。。。。。

mysql> CREATE TABLE `interval` (begin INT, end INT);Query OK, 0 rows affected (0.01 sec)

(这个可以略过,,,,,反正不推荐使用关键字做这些事,)还有一种情况——内置函数的名字,官网是这样说的:

Names of built-in functions are permitted as identifiers but may require care to be used as such

mysql> CREATE TABLE mydb.interval (begin INT, end INT);Query OK, 0 rows affected (0.01 sec)

下面的链接是最新版的mysql的关键字和保留字的表,可以在设计时多查一查,(R)是保留关键字

有些人可能还不明白关键字和保留字的区别,简单的说,关键字分两种:非保留和保留,保留关键字又有一个特殊类别叫未来保留。

mysql5.7官方文档地址:

解决办法

1、看写的SQL语句

insert into mrt_course(describe,price,add_time,class_id,is_top ) values ( '你好',25,1524313377,1,0)

2、问题显示 : 是MySQL的关键字,这样插入会显示以下错误

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 'describe,price,add_time,class_id,status,is_top ) values ( '你好',25,1524313377' at line 1

3、解决方法,在关键字上加上英文的 `describe` ,就可以插入了;在Navicat里面写的时候会自动添加``

insert into mrt_course(`describe`,price,add_time,class_id,is_top ) values ( '你好',25,1524313377,1,0)

标签: #mysql中关键字