我正在尝试插入到我的 mySQL 数据库中。第一列是“id”列,因为它是一个 auto_increment 字段,所以我将其留空。出于某种原因,我无法插入并且出现下面提到的错误。我很感激任何帮助。
我在尝试插入时遇到以下错误:
Incorrect integer value: '' for column 'id' at row 1
我的查询
INSERT INTO workorders VALUES('', ?, ?, ?, ?, ?)
这可能意味着您的
id
是一个 AUTO_INCREMENT
整数,并且您正在尝试发送一个字符串。你应该指定一个列列表并从你的INSERT
中省略它。
INSERT INTO workorders (column1, column2) VALUES (?, ?)
要让 MySQL 为
AUTO_INCREMENT
字段生成序列号,您有三个选择:
...没有为 AUTO_INCREMENT 列指定值,所以 MySQL 自动分配序列号。你也可以明确地 将 NULL 或 0 分配给列以生成序列号。
这三个语句将产生相同的结果:
INSERT INTO workorders (`priority`, `request_type`) VALUES(?, ?, ...)
INSERT INTO workorders VALUES(NULL, ?, ...)
INSERT INTO workorders VALUES(0, ?, ...)
尝试编辑您的my.cf并注释原始sql_mode并添加sql_mode =“”.
vi /etc/mysql/my.cnf
sql_mode =“”
保存并退出...
service mysql restart
对于
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 = ""
.
这是因为您的数据发送列类型是整数,而您正在向它发送一个字符串值。
所以,以下方法对我有用。 试试这个。
INSERT INTO workorders VALUES (
null,
?,
?,
?,
?,
?
)
不要使用
'null'
。使用它作为 null
没有单引号。
如果有phpMyAdmin,只需转到变量并查找SQL Mode,变量,编辑它并删除变量的所有内容,然后保存。对于那些不想接触代码的人来说,这也应该可以解决这个问题。
使用mysql server时,输入
set global sql_mode=''
即可修复。