从Remi-DB(CentOS 6)升级到MySQL 5.5后,我们遇到了一个问题:每次重新启动时,我们的SQL服务器都会将自己设置为严格模式:
mysql> SELECT @@GLOBAL.sql_mode; +--------------------------------------------+ | @@GLOBAL.sql_mode | +--------------------------------------------+ | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +--------------------------------------------+
然后我运行命令:
mysql> SET GLOBAL sql_mode=""; Query OK, 0 rows affected (0.00 sec)
这工作正常的会议,但重新启动这个变化是失去了(我也尝试设置“SET SESSION”sqlmode以及。
我也想注意到,我也在my.cnf文件中试过这个。
唯一可行的解决scheme是编写一个init文件在重新启动时运行SET GLOBAL sql_mode ,但是这很麻烦,烦人,而且不合理,所以必须让这个工作成为可能。
我试过重新安装SQL服务器无济于事。 (不过,我确实从备份中取回了数据,因为这是一个生产服务器。)
Percona Server v5.5.30-30.1-log也是这样。
请参阅: http : //bugs.mysql.com/bug.php?id=68643
并检查可能已经由mysql_install_db创build的/usr/my.cnf或类似文件($ MYSQL_HOME / my.cnf)。
这是重写我们的所有其他configuration文件中的sql_mode设置。
把这个添加到你的my.cnf中,然后重新启动MySQL。 确保没有其他线路覆盖之后。
replacesql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
同
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
有时在下面的行中添加也可能工作。 先尝试一下,如果不行,试试这些。
sql-mode=""
要么
sql-mode="TRADITIONAL"
我知道这是旧的,但如果有人需要它:
我在Windows 7 x64上使用了MySQL Server 5.6。
原来它在这里加载一个my.ini文件:
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
即使MySQL已经安装并从这里运行:
C:\Program Files\MySQL\MySQL Server 5.6
将ProgramData ini中的sql模式更改为以下内容,然后重新启动MySql解决了问题:
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"