揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

MariaDBで、SQLモードを緩くする

MariaDBSQLモードとは、なんか挙動を厳格にするかどうかの設定のこと

MariaDB [unko]> SELECT @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

STRICT_TRANS_TABLES

テーブルへのINSERT時、不正な値(NULL禁止にNULLや 長い文字列など)をエラーにする。
無効にすると、切り詰めたり警告で済ませたりして、エラーにはしない

ERROR_FOR_DIVISION_BY_ZERO

SELECT 1/0; をエラーにする。
無効にすると、警告どまり

NO_AUTO_CREATE_USER

GRANT文で存在しないユーザを指定したとき、自動でユーザを作らずエラーにする。
無効にすると、勝手にユーザを作ったりする(昔のMySQLの挙動)

NO_ENGINE_SUBSTITUTION

CREATE TABLEとかで、使えないエンジンを指定された(InnoDB禁止なのにInnoDB指定されたなど)ときにエラーにする
無効にすると、勝手にMyISAMにしたりする(昔のMySQLの挙動)



この中で、特に STRICT_TRANS_TABLES を無効にしたい。ほかは設定されててもなくてもどうでもいい(無効にする)

設定ファイルの編集

/etc/my.cnf.d/hoge.cnf で次のように設定する

[mysqld]
sql_mode =