Remi-DB(CentOS 6)からMySQL 5.5にアップグレードした後、SQLサーバーが再起動するたびに自分自身をstrictモードに戻すという問題が発生しています。
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
ファイルでも試したことがあることにも注意してください。
唯一の実行可能な解決策は、再起動時にSET GLOBAL sql_mode
を実行するようにinitファイルをコーディングすることですが、これは面倒で迷惑であり、不合理です。この作業をすぐに実行する方法が必要です。
私は役に立たないようにSQLサーバーの再インストールを試みました。 (ただし、これは本番サーバーなので、もちろんバックアップからデータを取り戻しました。)
これは、Percona Server v5.5.30-30.1-logでも私を噛みました。
参照: http://bugs.mysql.com/bug.php?id=6864
mysql_install_dbによって作成された可能性のある/usr/my.cnfまたは同様のファイル($ MYSQL_HOME/my.cnf)を確認します。
これにより、他のすべての構成ファイルのsql_mode設定が上書きされました。
これをmy.cnfに追加して、MySQLを再起動します。それを上書きする他の行がないことを確認してください。
置換sql-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"