MySQL コマンド ライン クライアント経由で、グローバル mysql_mode を設定しようとしています。
SET GLOBAL sql_mode = TRADITIONAL;
これは現在のセッションでは機能しますが、サーバーを再起動した後、sql_mode はデフォルトの ''、空の文字列に戻ります。
sql_mode を恒久的に TRADITIONAL に設定するにはどうすればよいですか?
関連する場合、MySQL は WAMP パッケージの一部です。
ありがとうございました。
MySQL sql_mode "TRADITIONAL"、別名「厳密モード」は、MySQL ドキュメントで次のように定義されています。
列に誤った値を挿入すると、「警告の代わりにエラーが発生します」。
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)
成功!あなたは今、黄金です。