このエントリーをはてなブックマークに追加
2013-08-08 23:00:00 +0900

MySQLのテーブルをmigrationで作成するとき、以下のようにtext型が指定された属性は、MySQLのTEXT型にマッピングされる。(デフォルト)

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :body
      t.timestamps
    end
  end
end

TEXT型は最大で65535Byteまでのデータを格納できる。これでも困らない場合は多いが、このデータ容量で足りない場合は、テーブル作成時または、後のmigrationで型を変更してやる必要がある。 テーブル作成時であれば以下のように:limitを指定してやる。

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :body, :limit => 4294967295
      t.timestamps
    end
  end
end

カラム型を変更する場合は、マイグレーションのchange_columnでも可能。

change_column :posts, :body, :text, :limit => 4294967295

ちなみにlimitに指定する値の範囲と対応する型は以下の通り。

min max
1 255 TINYTEXT
256 65535 TEXT
65536 16777215 MEDIUMTEXT
16777216 4294967295 LONGTEXT



記事一覧へ