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 |