阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 5.6.20数据库sql_mode模式设置

155次阅读
没有评论

共计 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1455字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中