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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不正确的整数值:''对于第1行的列'id'相关的知识,希望对你有一定的参考价值。

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

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

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

我的查询

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

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

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)
另一答案

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

  1. 指定列表列表并从中忽略您的auto_incremented列,如njk建议的那样。那将是最好的方法。看评论。
  2. 显式分配NULL
  3. 明确指定0

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', ...";
另一答案

尝试编辑my.cf并注释原始的sql_mode并添加sql_mode =“”。

vi /etc/mysql/my.cnf

sql_mode =“”

保存并退出...

service mysql restart
另一答案

这是因为您的数据发送列类型是整数,并且您正在向其发送字符串值。

所以,以下方式对我有用。试试这个。

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

不要使用'null'。使用它作为null没有单引号。

以上是关于不正确的整数值:''对于第1行的列'id'的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1366。不正确的整数值:第 2 行的列“ReportsTo”的“NULL”

对于整数为整数且允许为空的MySQL列,错误的整数值''

错误 1366 (HY000):不正确的字符串值:第 1 行的列 'comment' 的 '\xF0\x9F\x98\x9C'

PDO PHP - PDOException - 数值超出范围:1264 第 1 行的列“customer_id”的值超出范围

不正确的字符串值:第 1 行的列 'VARIABLE_VALUE' 的 '\xD6\xD0\xB9\xFA\xB1\xEA...' [重复]

如何匹配在linq中具有多个用逗号分隔的整数值的列?