Rails、ActiveRecord+mysql2、SQL実行時にwarning出たらエラーにする
MySQLのwarningって、
- 文字列が長すぎたから勝手に短くして保存しておいたよ!
- 数字が大きすぎたから適当な数字を保存しておいたよ!!
- 数値として解釈できない文字列があったから0とみなして比較したよ!!!
など、無視すると死ぬ系メッセージであることが多いんだけど無視されがちなので困り者。
insert系のwarningについてはsql_modeの設定を変えることでエラーにできるんだけど、その設定がなされてなかったり、selectがヤバイみたいなケースもあったりしてな(;´Д`)
というわけで、ActiveRecord側でチェックするモンキーパッチを書きました(for mysql2)。
1クエリ実行ごとにshow warning投げてるので本番にはおすすめしない。
Mysql2::Client、リリースバージョンにはwarning_countがないので……。HEAD使うか、次バージョンを待ちましょう。