MySQLのSTRICT_TRANS_TABLESをオフにする
最近MySQLをさわり始めたのですが、設定ファイルがいっぱいあって困惑したのでメモします。SQLモードの変更
あるCMSのインストールとテストをしようとしたら、STRICT_TRANS_TABLESをオフにしてくれと書いてあったのですが、いったいどこで変更するのやら?まずは現状のSQLモードを確認
SELECT @@global.sql_mode;
/etc/mysql/mysql.conf.d/mysqld.cnf
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISIONNE_SUBSTITUTION
/etc/init.d/mysql restart
WordPress/Gutenbergの調子が悪くてこれ以上書けない笑これは解決したけどどうやって解決したか忘れてしまった。
Gutenbergの調子よくなったけど今度は内容を忘れてしまった。
あるCMSってなんだろう。
WordPress?じゃないと思うけど…。
以下はいま使っているバージョン。
mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 5.7.27-0ubuntu0.16.04.1 |
+-------------------------+
1 row in set (0.00 sec)
SQLモードを変更する
なにはともあれ、sql_modeを変更するときは、以下のようにします。これは何も設定しないとき。
mysql> SET GLOBAL sql_mode = '';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SELECT @@global.sql_mode;
+-------------------+
| @@global.sql_mode |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
これはいろいろ設定するとき。
mysql> SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@global.sql_mode; +-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
これがmysql 5.7のsql_modeの初期状態です。また、my.cnfに書く方法もあります。
コメント