33

MySQL コマンド ライン クライアント経由で、グローバル mysql_mode を設定しようとしています。

SET GLOBAL sql_mode = TRADITIONAL;

これは現在のセッションでは機能しますが、サーバーを再起動した後、sql_mode はデフォルトの ''、空の文字列に戻ります。

sql_mode を恒久的に TRADITIONAL に設定するにはどうすればよいですか?

関連する場合、MySQL は WAMP パッケージの一部です。

ありがとうございました。

4

3 に答える 3

29

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)

成功!あなたは今、黄金です。

于 2016-08-05T10:13:17.800 に答える