RailsでDBをsqlite3からMySQLに変更したのち、今まで通り画像の登録を行おうとしたらData too long for column 'binary_data'
と怒られました。
調べてみたところ、どうやらMySQLではBINARY型が無いため、自動でBLOB型に変換されるそうで、またそれと同時に最大量(lmit)も決めてくれていて、これが65535Byte(64KB)になっています。
そして今回登録しようとした画像ファイルの容量218KBは、上記の最大量63KBを超えていたためエラーとなりました。
これを回避するために、下記の記事を参考に最大量5MBに変更して対応してみました。
- migrationファイルの作成と実行方法。
- カラムの修正
- migrationファイルのchangeメソッドについて
次のコードが実際に作成したマイグレーションファイルになります。
マイグレーションファイル.rb
class ChangeBinaryToImage < ActiveRecord::Migration[5.0]
def change
change_column :images, :binary_data, :binary, :limit => 5.megabyte
end
end
こちらを適応させたのち、再び画像を登録して見るとうまく行きました!