星星之火-MySQL建表时报错[42000][1064]

本文最后更新于:December 3, 2021 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

写者的MySQL版本是 8.0.26 的。

1.SQL建表语句

1
2
3
4
5
create table 'TestDate'(
'id' varchar(10) primary key not null,
'name' varchar(20) not null,
'pwd' varchar(20) not null
)engine =InnoDB default charset=utf8;

2.报错

[42000] [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 ‘’id’ varchar(10) primary key not null, ‘name’ varchar(20) not null, ‘pwd’ at line 2

3.原因

在MySQL命令在IDEA中使用sql语句进行建表时,MySQL 报错。看上去那条sql语句确实没毛病,但是运行起来就是报错。报错信息也如上。

其实这个问题就是语法上的错误,在MySQL中,为了区分MySQL的关键字与普通字符,MySQL引入了一个反引号(`)。反引号也就在波浪号位置。
详情见官网:https://dev.mysql.com/doc/refman/5.5/en/keywords.html

在上述的sql语句中,列名称使用的是单引号而不是反引号,所以会报了这个错误出来。

4.解决办法

解决办法就是将字段的单引号改为反引号,如下:

1
2
3
4
5
create table `TestDate`(
`id` varchar(10) primary key not null,
`name` varchar(20) not null,
`pwd` varchar(20) not null
)engine =InnoDB default charset=utf8;

再次运行就不会报错了。但是有一点需要注意,后面列的注释不能用反引号,因为这只是一个普通字符串,不是MySQL的关键字。

还有一种办法就是字段不写反引号。如下,可自行尝试。

1
2
3
4
5
create table TestDate(
id varchar(10) primary key not null,
name varchar(20) not null,
pwd varchar(20) not null
)engine =InnoDB default charset=utf8;