STRICT_TRANS_TABLES 回避

昔改造したウェブサイトを Ubuntu 12.04 LTS の環境から Amazon Linux (CentOS) に移植したところ、
一気に動作不良に。

エラーは 1366: Incorrect integer value: '' for column 'hoge' at row 1 というもの。

なにやら最近の MySQL/MariaDBでは では STRICT_TRANS_TABLES なる sql_mode が設定されていて型の自動調整が無効になっているらしい。

my.cnf で書き換えてみたところ

[ERROR] mysqld: Got error 'File size bigger than expected' when trying to use aria control file '/var/lib/mysql/aria_log_control'

というエラーが発生してMySQLが起動しない。 aria_log_control というファイルを削除しないといけないみたいだ。

結局、 init-file を my.cnf で定義して以下のSQL分をサーバ開始と同時に実行するようにした。

SET @@GLOBAL.SQL_MODE = REPLACE(@@GLOBAL.SQL_MODE, 'STRICT_TRANS_TABLES,', '');

もっと良い方法が無いものかな。