我正在尝试插入我的mySQL数据库。第一列是'id'列,因为它是一个auto_increment字段,我把它留空了。由于某种原因,我无法插入,我收到下面提到的错误。我很感激任何帮助。
尝试插入时出现以下错误:
Incorrect integer value: '' for column 'id' at row 1
我的查询
$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";
答案 0 :(得分:27)
这可能意味着您的id
是AUTO_INCREMENT
整数,并且您正在尝试发送字符串。您应该指定一个列列表,并从INSERT
中省略它。
INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)
答案 1 :(得分:20)
要让MySql为AUTO_INCREMENT
字段生成序列号,您有三个选项:
... 为AUTO_INCREMENT列指定了无值,因此MySQL 自动分配序列号。你也可以明确地说 将 NULL 或 0 分配给列以生成序列号。
这三个陈述将产生相同的结果:
$insertQuery = "INSERT INTO workorders (`priority`, `request_type`) VALUES('$priority', '$requestType', ...)";
$insertQuery = "INSERT INTO workorders VALUES(NULL, '$priority', ...)";
$insertQuery = "INSERT INTO workorders VALUES(0, '$priority', ...";
答案 2 :(得分:7)
尝试编辑您的 my.cf 并注释原始sql_mode并添加 sql_mode =“” 。
vi /etc/mysql/my.cnf
sql_mode =“”
保存并退出...
service mysql restart
答案 3 :(得分:0)
对于wamp / phpmyadmin中的相同错误, 我已经编辑了my.ini, 评论了原文 ; sql-mode =“ STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER” 并添加了sql_mode =“”。 对我有用。