mysql 5.6 sql mode_mysql5.6.20数据库sql_mode模式设置

开发需求要求通过php后台程序导入数据到mysql的某个库的表中,但是报错:Incorrect integer value: '' for column 'id' at row 1。同时自己在mysql5.6的数据库的这个表中insert into 一条数据,insert into log values('','admin','31','002t'),还是报错出现上面同样的错误。

于是网上百度找到解决办法:

参考资料:http://blog.csdn.net/j2eelamp/article/details/6866614

解决办法:

后来查了下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 |

+--------------------------------------------+

此时开发再次导入数据到后台,不再报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值