Ubuntu 16.04でMySQLのSTRICT_TRANS_TABLESをオフにする

Web関連

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に書く方法もあります。

コメント

タイトルとURLをコピーしました