龙空技术网

创建表使用关键字当作列名导致的报错

玩转Linux与MySQL 87

前言:

当前同学们对“mysqlunsignedint”大概比较珍视,姐妹们都想要了解一些“mysqlunsignedint”的相关文章。那么小编同时在网摘上网罗了一些对于“mysqlunsignedint””的相关知识,希望大家能喜欢,大家快快来了解一下吧!

背景:

根据开发给的sql创建表,创建失败

mysql> create table zss (

a bigint(20) unsigned AUTO_INCREMENT COMMENT '自增主键',

b_id varchar(64) BINARY NOT NULL DEFAULT '' COMMENT '账号ID',

c tinyint NOT NULL COMMENT '状态 0: 好, 1: 很好, 2:非常好',

d_time datetime DEFAULT '2000-11-08 00:00:00' COMMENT '开始时间',

key varchar(25) NOT NULL DEFAULT '' COMMENT '标识',

e_time datetime NOT NULL DEFAULT '2000-09-01 00:00:00' COMMENT '时间',

PRIMARY KEY(a),

UNIQUE accid(b_id asc)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 COMMENT='a';

ERROR 1064 (42000): 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 'varchar(25) NOT NULL DEFAULT '' COMMENT '标识',

d_time datetime ' at line 6

mysql>

处理过程:

根据报错:第6行有问题

在自己的测试环境,测试创建这个字段是否正常

mysql> create table jj(key varchar(25) NOT NULL DEFAULT '' COMMENT '标识');

ERROR 1064 (42000): 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 'varchar(25) NOT NULL DEFAULT '' COMMENT '用户标识')' at line 1

也有报错,确认是这里导致的报错,经过仔细观察应该是字段名用了关键字key导致的,修改字段名试试:正常创建了

mysql> create table jj(key1 varchar(128) NOT NULL DEFAULT '' COMMENT '标识');

Query OK, 0 rows affected (0.34 sec)

总结:

在创建表时,如果有报错,应根据报错提示的行号进行排查,如果无法一眼发现问题,可以在自己的测试环境测试创建这个行号对应的字段,确认是否是这个字段导致的

标签: #mysqlunsignedint