几乎没有手写过建表语句的人今天想建一个表将一个 csv 文件导入进行分析,SQL 写好了,运行出现错误码 1064, 但是没有文字描述错在哪里,为了分析错误原因,将字段改为最简单的形式,还是出错:
create table table_name ( id unsigned int not null auto_increment, name varchar(20), primary key (id) ) default charset utf8
错误信息如下:
#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 ‘unsigned int not null auto_increment, name varchar(20), primary key (‘ at line 2
看了半天不知道错在哪里了,叫室友帮忙看一眼,他说,unsigned 应该在 int 后面啊,我试了一下,果然成功运行。
更改后的 SQL 如下:
create table table_name ( id int unsigned not null auto_increment, name varchar(20), primary key (id) ) default charset utf8
无符号整形不应该是 unsigned int 吗? C 语言就是这样定义的啊,额~
奇葩的 SQL 啊。
其实是我自己学艺不精。
据我所知,unsigned是数据类型的一个属性,就像not null那样
是的,因此要放在 int 后面用来修饰 说明是无符号,而不是直接 unsigned int 来代表无符号整形。