跳转至

Mysql 设置sql_mode


2015-09-16 by dongnan

环境

操作系统: CentOS 6.5
软件版本: mysql 5.6.x

问题描述

mysql 数据库 my.cnf 文件添加配置项 sql_mode 无效。

修改配置文件无效

tail -n1 /etc/my.cnf

sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

查询SQL模式

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

设置全局变量无效

mysql> set global sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

查询SQL模式

mysql> show variables like "sql_mode";
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)

解决方法

编辑mysql启动脚本文件,添加 --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

vim /etc/init.d/mysqld

找到类似如下格式内容

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &

修改后内容类似如下

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" $other_args >/dev/null 2>&1 &

重启数据库

/etc/init.d/mysqld restart

验证

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

参考

Mysql容器设置sql_mode模式

回到页面顶部