不正确的整数值:''对于第1行的列'id'

时间:2013-02-07 23:14:19

标签: mysql insert

我正在尝试插入我的mySQL数据库。第一列是'id'列,因为它是一个auto_increment字段,我把它留空了。由于某种原因,我无法插入,我收到下面提到的错误。我很感激任何帮助。

尝试插入时出现以下错误:

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

我的查询

$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";

4 个答案:

答案 0 :(得分:27)

这可能意味着您的idAUTO_INCREMENT整数,并且您正在尝试发送字符串。您应该指定一个列列表,并从INSERT中省略它。

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)

答案 1 :(得分:20)

要让MySql为AUTO_INCREMENT字段生成序列号,您有三个选项:

  1. 指定列表列表并从中省略您的auto_incremented列,如njk建议的那样。 这将是最好的方法。请参阅评论。
  2. 显式指定NULL
  3. 明确指定0
  4. 3.6.9. Using 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 =“”。 对我有用。