mysql 不正确的整数值:第1行的列“id”的“”

mu0hgdu0  于 2023-04-19  发布在  Mysql
关注(0)|答案(7)|浏览(289)

我试图插入到我的mySQL数据库.第一列是'id'列,因为它是一个auto_increment字段,我把它留空.由于某种原因,我无法插入,我得到下面提到的错误.我感谢任何帮助这.
尝试插入时出现以下错误:

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

我的查询

INSERT INTO workorders VALUES('', ?, ?, ?, ?, ?)
kxkpmulp

kxkpmulp1#

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

INSERT INTO workorders (column1, column2) VALUES (?, ?)
eaf3rand

eaf3rand2#

要让MySQL为AUTO_INCREMENT字段生成序列号,您有三个选项:
1.指定列出一个列列表,并按照njk的建议从其中省略auto_increased列。这将是最好的方法。参见注解。
1.显式分配NULL
1.显式指定0
3.6.9. Using AUTO_INCREMENT
...没有为AUTO_INCREMENT列指定值,MySQL会自动分配序号。您也可以显式分配
NULL
0给该列以生成序号。
这三个语句将产生相同的结果:

INSERT INTO workorders (`priority`, `request_type`) VALUES(?, ?, ...)
INSERT INTO workorders VALUES(NULL, ?, ...)
INSERT INTO workorders VALUES(0, ?, ...)
w6lpcovy

w6lpcovy3#

尝试编辑您的my.cf并注解原始sql_mode,并添加sql_mode =“"

vi /etc/mysql/my.cnf

SQL_mode =“”
保存并退出

service mysql restart
8ljdwjyq

8ljdwjyq4#

对于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 = ""

wf82jlnq

wf82jlnq5#

这是因为您的数据发送列类型是整数,并且您正在向其发送字符串值。
所以,下面的方法对我有效。试试这个。

INSERT INTO workorders VALUES (
    null,
    ?,
    ?,
    ?,
    ?,
    ?
)

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

qfe3c7zg

qfe3c7zg6#

如果有phpMyAdmin,只需转到变量并查找SQL模式,变量,编辑它并删除变量的所有内容,然后保存。对于那些不想接触代码的人来说,这也应该解决这个问题。

3pvhb19x

3pvhb19x7#

当使用mysql服务器时,你可以通过输入set global sql_mode=''来修复它。

相关问题