SQLモード「STRICT_TRANS_TABLES」を無効にする
MariaDB 10.2.4以降では、STRICT_TRANS_TABLESというテーブルの行に厳密な型の値のみを許可するというモードが有効になっています。
これを無効にするには、sql_modeのSTRICT_TRANS_TABLESの値を削除してください。
[mysqld] # 変更前 sql_mode="STRICT_TRANS_TABLES,他の値" # 変更後 sql_mode="他の値"
MariaDBのバージョンアップ時の注意
MariaDB 10.2.4以降では、STRICT_TRANS_TABLESというテーブルの行に厳密な型の値のみを許可するというモードが有効になっています。
以下のようなエラーが発生した場合は、STRICT_TRANS_TABLESが有効になっていることが原因です。
DBD::mysql::st execute failed: Incorrect integer value: '無料' for column `kimotosystem`.`book`.`price` at row 1. Following SQL is executed.
元のMariaDBの動作を持たせたい場合は、STRICT_TRANS_TABLESを無効にしましょう。
不正な値を完全にはじきたいか、insertを失敗させたくないか
SQLモードの、この値は、プロジェクトの要件によって、不正な値を完全にはじきたいか、あるいは、insertを失敗させたくないかという観点で決めると良いと思います。
Perlの場合がプログラミング言語の型が緩やかなので、STRICT_TRANS_TABLESが有効になっていると、insertがエラーで終了しやすくなるという感じはあります。