web-dev-qa-db-ja.com

MySQLの厳格モードがオンのまま

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サーバーの再インストールを試みました。 (ただし、これは本番サーバーなので、もちろんバックアップからデータを取り戻しました。)

3

これは、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設定が上書きされました。

10
paudley

これを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"
2
Kourosh Samia

私はこれが古いことを知っていますが、誰かがそれを必要とする場合に備えて:

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" 
0
ganey