使用INSERT和AUTO-INCREMENT列的SQL语句出错

时间:2011-10-26 07:13:05

标签: mysql

INSERT INTO `configuration` VALUES ('', 'News Box Character Count', 'NEWS_BOX_CHAR_COUNT', '200', 'Set the number of characters (bytes) that you want to display in the news preview box.', 19, 99, NULL, '2004-09-07 12:00:00', NULL, NULL);

我在phpMyAdmin中运行此命令,显示

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

configuration_id是一个自动增量字段,开始为1

7 个答案:

答案 0 :(得分:5)

而不是INSERT INTO configuration VALUES ('', 'News Box Character Count',

将值NULL传递给auto_increment或整数列,或者您只是不在sql查询中包含该列。

INSERT INTO `configuration` VALUES (NULL, 'News Box Character Count', ...

这是因为,mysql在严格模式下运行。

当没有任何内容输入时,您可以对所有整数列使用NULL或关闭MySql Strict模式。

答案 1 :(得分:2)

对于autoincrement in MySQL插入NULL 或根本不插入任何内容:

最简单&最干净:使用NULL

INSERT INTO `configuration` VALUES (NULL, 'News Box Character Count', 'NEWS_BOX_CHAR_COUNT', '200', 'Set the number of characters (bytes) that you want to display in the news preview box.', 19, 99, NULL, '2004-09-07 12:00:00', NULL, NULL);

更多工作:为除自动增量之外的每一列命名

INSERT INTO `configuration` (every,column,except,the,first) VALUES ('News Box Charac`ter Count', 'NEWS_BOX_CHAR_COUNT', '200', 'Set the number of characters (bytes) that you want to display in the news preview box.', 19, 99, NULL, '2004-09-07 12:00:00', NULL, NULL);`

答案 2 :(得分:1)

对我来说这似乎很明显?你给了一个整数列,你显式插入一个字符串(虽然它是空的)。如果列设置为自动递增,请从值数组中删除第一个值(''),您应该没问题。此外,您可能希望指定要为其插入值的列,例如:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

答案 3 :(得分:1)

对于AUTO_INCREMENT字段,您可以设置NULL;它会自动生成新值。

例如 -

INSERT INTO table_name VALUES(NULL, 'value', ...)...

答案 4 :(得分:0)

如果列是自动递增的,那么您可以从INSERT语句中简单地省略它。

答案 5 :(得分:0)

将''值替换为NULL(''不是有效整数)。请参阅here

答案 6 :(得分:0)

插入时应始终使用列名。因此,只需不必插入configuration_id列,并且在更改列时sql语句不会中断。

使用以下内容:INSERT INTO table (column1, column2) VALUES (value1, value2);