BLOBの最大長

BLOB[(M))] 最大長65,535バイトのバイナリ
MEDIUMBLOB 最大長16,777,215バイトのバイナリ
LONGBLOB] 最大長4,294,967,295バイトあるいは4Gバイトのバイナリ

前に見かけて知ってたのに、すっかり忘れてた。BLOBだと64Kしか入らない。ちょっと大きなファイルをDBにしまおうとすると、64KBでぶった切られて入るので、ファイルとしては壊れてしまう。

  def self.up
    if /mysql/i =~ adapter_name
      change_column(:uploaded_files, :data, "longblob")
    end
  end

  def self.down
    if /mysql/i =~ adapter_name
      change_column(:uploaded_files, :data, :binary)
    end
  end

っていうマイグレーションを書いて実行。うまく行きました。