class CreateHoges < ActiveRecord::Migration
def change
create_table :articles do |t|
t.text :value, :limit => 4294967295
t.timestamps null: false
end
end
end
実行すると以下のようになる
12345678910
$ rails db
mysql> show columns from hoges;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| value | longtext | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
limitの値は、以下のように対応している
設定値
DB側の型
1 ~ 255
TINYTEXT
256 ~ 65535
TEXT
65536 ~ 16777215
MEDIUMTEXT
16777216 ~ 4294967295
LONGTEXT
マイグレーション実行
DB作成
1
$rake db:create
マイグレーションの実行
1
$rake db:migrate
マイグレーション結果確認
1
$rake db:migrate:status
ロールバック
1
$rake db:rollback
DBの削除
1
$rake db:drop
シードの投入(マスターデータなどシードで投入することが多い)
1
$rake db:seed
既存カラムの変更
カラムを変更したい場合、以下のコマンドでマイグレーションファイルを生成する
1
$rails g migration ChangeColumnTo<モデル名>
変更は以下のような形で行う(upとdownを定義することでrollbackにも対応できる)
123456789101112
class ChangeColumnToYourModel< ActiveRecord::Migration
# 変更内容
def up
change_column :users, :hoge, :string, null: false, default: 0
end
# 変更前の状態
def down
change_column :users, :hoge, :string, null: true, default: 0
end
end