Edited at

【Rails×MySQL】保存できる画像ファイルの容量を変更する

More than 1 year has passed since last update.

RailsでDBをsqlite3からMySQLに変更したのち、今まで通り画像の登録を行おうとしたらData too long for column 'binary_data'と怒られました。

調べてみたところ、どうやらMySQLではBINARY型が無いため、自動でBLOB型に変換されるそうで、またそれと同時に最大量(lmit)も決めてくれていて、これが65535Byte(64KB)になっています。

そして今回登録しようとした画像ファイルの容量218KBは、上記の最大量63KBを超えていたためエラーとなりました。

これを回避するために、下記の記事を参考に最大量5MBに変更して対応してみました。

次のコードが実際に作成したマイグレーションファイルになります。


マイグレーションファイル.rb

class ChangeBinaryToImage < ActiveRecord::Migration[5.0]

def change
change_column :images, :binary_data, :binary, :limit => 5.megabyte
end
end

こちらを適応させたのち、再び画像を登録して見るとうまく行きました!