首页 » 云计算 » mysql5.6.31更改sql_mode类型

mysql5.6.31更改sql_mode类型

 

参考:https://www.olinux.org.cn/mysql/846.html

 

自己补充:

以下的方法也不是对的:其实是可以修改配置文件让其生效的,不需要加在启动的脚本中,

默认可能修改配置文件不成功的原因是因为你不了解mysql加载配置文件有好几个和一个顺充的。

是按照以下顺序加载的:

/etc/my.cnf    /etc/mysql/my.cnf /usr/etc/my.cnf   ~/.my.cnf 还有一个是的basedir目录下面。mysql按照上面的顺序加载配置文件,后面的配置项会覆盖前面的。所以有时候配置不成功,是因为基础目录下的my.cnf把前面的覆盖的。

 

 

 

线上环境使用的是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!

 

[root@7-node1 tools]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.31-log Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql>

原文链接:mysql5.6.31更改sql_mode类型,转载请注明来源!

0