共计 1455 个字符,预计需要花费 4 分钟才能阅读完成。
开发需求要求通过 php 后台程序导入数据到 MySQL 的某个库的表中,但是报错:Incorrect integer value: ” for column ‘id’ at row 1。同时自己在 mysql5.6 的数据库的这个表中 insert into 一条数据,insert into log values(”,’admin’,’31’,’002t’),还是报错出现上面同样的错误。
解决办法:
后来查了下 MySQL 的资料。发现 5 以上的版本如果是空值应该要写 NULL
这种问题一般 mysql 5.x 上出现。我用的 mysql5.1
官方解释说:得知新版本 mysql 对空值插入有 ”bug”, 要在安装 mysql 的时候去除默认勾选的 enable strict SQL mode
同时我线上的 mysql 数据库的版本为 mysql5.6.20.
于是找到一文档:
mysql5.6 sql_mode 设置
参考资料:
由于数据人员的需求,现在需要修改 mysql 的 sql_mode
sql_mode 默认是 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
这时候我在 /etc/my.cnf 配置如下
sql_mode=NO_ENGINE_SUBSTITUTION
重启后还是
mysql> SELECT @@GLOBAL.sql_mode;
+——————————————–+
| @@GLOBAL.sql_mode |
+——————————————–+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+——————————————–+
1 row in set (0.00 sec)
这是因为我编译安装的目录下面有一个文件叫 my.cnf,然而这个文件里有 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这一项
把这个 my.cnf mv my.cnf my.cnf.ori
grep sql_mode /usr/local/mysql/my.cnf.ori
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
同时在 /etc/my.cnf 文件中设置:
sql_mode= NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
grep “sql_mode” /etc/my.cnf
sql_mode=NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
再重启 mysql
mysql> SELECT @@GLOBAL.sql_mode;
+——————————————–+
| @@GLOBAL.sql_mode |
+——————————————–+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+——————————————–+
此时开发再次导入数据到后台,不再报错。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146204.htm