线上环境使用的是oracle mysql 5.5.x,现新上一台美团云主机,准备把Mysql升级到5.6.x
sql_mode坑
5.5.x sql_mode默认值为空,5.6.x默认值为STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,于是原来的程序由于sql语句不严谨,出现报错,网站无法访问。
sql_mode坑处理办法
首先想到的是修改my.cnf文件,在my.cnf配置文件中添加sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,保存文件,重启Mysql服务,一气呵成,本想问题应该随之而解,但是人品欠佳,进入mysql命令行查看,sql_mode值纹丝不动,利用SET命令更改倒是可以成功,但是每次重启服务以后,此配置会失效,无奈只好想其他办法。
暂时想到两种办法
一、找开发修改程序,在mysql_query函数中添加sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
二、还是在Mysql服务这块解决,在Mysql启动脚本中添加--sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",保存后测试,一切ok!