読者です 読者をやめる 読者になる 読者になる

Rails + MySQLでのblob型の扱い

Rails MYSQL

RailsのMigrationで:binaryとするとMySQLではblob型になる。

create_table :files do |t|
  t.column :data, :binary
end

MySQLでのblob型

サイズ
TINYBLOB 256byte
BLOB 64KB
MEDIUMBLOB 16MB
LONGBLOB 4GB

Migrationでは:binaryしか選択肢がなくMySQLだとblob型として解釈される。
画像ファイルならば普通に大丈夫だけど他のファイルも扱うと苦しい。

SQLで直に属性を定義することでこの問題は解消する

class AlterModifyLongblob < ActiveRecord::Migration
  def self.up
    execute("alter table table_name modify column_name longblob")
  end

  def self.down
    execute("alter table table_name modify column_name blob")
  end
end

属性変更するならこんなMigration書いて実行すればlongblog型に変更される。

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

  • 作者: Sam Ruby,Dave Thomas,David Heinemeier Hansson,前田修吾
  • 出版社/メーカー: オーム社
  • 発売日: 2011/12/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 12人 クリック: 206回
  • この商品を含むブログ (40件) を見る