MySQLコマンドラインクライアントを介して、グローバルmysql_modeを設定しようとしています。
SET GLOBAL sql_mode = TRADITIONAL;
これは現在のセッションでは機能しますが、サーバーを再起動すると、sql_modeはデフォルトの ''、空の文字列に戻ります。
Sql_modeをTRADITIONALに永続的に設定するにはどうすればよいですか?
関連する場合、MySQLはWAMPパッケージの一部です。
ありがとうございました。
これをmy.cnfファイル(またはWindowsを使用している場合はmy.ini)に追加します。
sql_mode="TRADITIONAL"
サーバーを再起動します
MySQL sql_mode "TRADITIONAL"
、別名「厳格モード」は、 MySQL docs によって定義されます。
間違った値を列に挿入する場合、「警告ではなくエラーを表示」。
Sql_modeが"TRADITIONAL"
に設定されていることを確認する方法は次のとおりです。
まず、現在の設定を確認します:
mysql
mysql> SELECT @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
これは、デフォルトの空白を返しましたが、それは悪いことです。sql_modeが「TRADITIONAL」に設定されていません。
だから設定ファイルを編集します:
Sudo vim /etc/mysql/my.cnf
[mysqld]
というラベルのセクションにこの行を追加します:sql_mode="TRADITIONAL"
(fancyPantsが指摘したように)
次に、サーバーを再起動します:
Sudo service mysql restart
それからもう一度チェックしてください:
mysql
mysql> SELECT @@GLOBAL.sql_mode;
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
成功!あなたは今黄金です。