STRICT_TRANS_TABLESに苦しめられた話

カラムのタイプをenumにしたら、データ投入時に怒られるようになってめっちゃ時間取られた件☠️

panic: Got unexpected error: failed to insert into foreign table: models: unable to insert into transactions: Error 1265: Data truncated for column 'transaction_type' at row 1 [recovered]

結論から言うと、STRICT_TRANS_TABLES のせい。
それまでは快調に動いていたので、いつなんの拍子でこの値がセットされたかは不明。

mysql> select @@global.sql_mode \G
*************************** 1. row ***************************
@@global.sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)

OFFったら、何事もなく動くようになった👿

mysql> set global sql_mode = "";
Query OK, 0 rows affected (0.00 sec)

追記

その後、設定が戻ってしまう事象が発生。
my.cnfの設定を変更して戻らないようにする。

$ sudo vi /etc/my.cnf # STRICT_TRANS_TABLES を消す
$ mysql.server reload

確認

> SHOW VARIABLES LIKE 'sql_mode';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+

参考
shibukixxx.hateblo.jp
gomiba.co.in
qiita.com