2011-05-10 139 views
0

一些脚本我迁移正在做的`id` INT(10)NOT NULL的auto_increment

INSERT INTO `table` (`id` , `fld2` , `fld3`) VALUES ('', 'v2', 'v3') 

id很多被定义为:int(10) NOT NULL auto_increment

我的数据库/ MySQL服务器(57年5月1日)抛出错误:

1366 - Incorrect integer value: '' for column 'id' at row 1 

''正在接受没有语法错误,做自动递增的整数字段原始服务器(5.1的下一个号码。 52)。任何想法可能是在MySQL服务器设置的区别?它不可能是版本差异,都是5.1.xx?

+0

运行INSERT INTO表(fld2,fld3)VALUES('v2','v3')时会发生什么? – 2011-05-10 07:52:33

回答

4

由于ID是AUTO_INCREMENT你不应该提到它在你的插入查询:

INSERT INTO table (fld2 , fld3) VALUES ('v2', 'v3') 

再说你在你的ID因而,如果将字符串它不是AUTO_INCREMENT你会得到同样的错误呢。

+0

如果你绝对必须为该列提供一个值,那么包含它,但不是将它设置为''''在'NULL'中传递,它也会自动增加。 – 2011-05-10 08:00:14

0

看起来像当前服务器的默认设置不同于前一个。查看关于strict mode设置的MySQL文档。

+0

SELECT @@ GLOBAL.sql_mode; – sfgn 2011-05-10 10:05:40

+0

这似乎是罪魁祸首。但删除sql-mode =“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”后,重新启动服务器,创建新的数据库后,SELECT @@ GLOBAL.sql_mode仍显示“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” – sfgn 2011-05-10 10:07:26

+0

SET @@ global.sql_mode ='';问题解决了。 – sfgn 2011-05-10 11:07:44