ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
マイグレーション実行コマンドとは
Ruby on Rails では、テーブルの作成・カラム追加・索引の変更などスキーマ変更を Ruby のコード(マイグレーションファイル)として管理します。これらのファイルを実際に DB に反映するコマンドが rails db:migrate です。Rails 4 以前は rake db:migrate でしたが、現在は rails コマンド経由が推奨です(どちらも内部的には同じ処理を呼び出します)。
基本構文
rails db:migrate [VERSION=タイムスタンプ] [RAILS_ENV=環境名]
シンプルな使用例
$ rails db:migrate
== 20180427173502 CreateTests: migrating ======================================
-- create_table(:tests)
-> 0.0123s
== 20180427173502 CreateTests: migrated (0.0150s) =============================未適用のマイグレーションファイルが上から順に実行され、schema_migrations テーブルに該当ファイルのタイムスタンプが記録されます。記録済みのものは再実行されません。
よく使うサブコマンド
| コマンド | 役割 |
|---|---|
rails db:migrate | 未適用のマイグレーションを順に実行 |
rails db:rollback | 直前のマイグレーションを 1 つ戻す |
rails db:rollback STEP=3 | 3 つ分戻す |
rails db:migrate:redo | 直前のマイグレーションを 1 回戻して再実行 |
rails db:migrate:up VERSION=... | 指定したマイグレーションだけ up |
rails db:migrate:down VERSION=... | 指定したマイグレーションだけ down |
rails db:migrate:status | 各マイグレーションの up/down 状態を一覧 |
rails db:schema:load | schema.rb から一気にテーブル作成(開発初期化向け) |
rails db:reset | drop → create → schema:load → seed |
状態確認の例
$ rails db:migrate:status
database: app_development
Status Migration ID Migration Name
--------------------------------------------------
up 20180427173502 Create tests
up 20180510120010 Add email to users
down 20180523080055 Add index to articlesdown になっているものが未適用です。rails db:migrate で残りが一気に適用されます。
ロールバック例
# 直前を 1 つ戻す
$ rails db:rollback
# 3 つ戻す
$ rails db:rollback STEP=3
# 特定バージョンを戻す
$ rails db:migrate:down VERSION=20180523080055
環境ごとの実行
環境を切り替えるには RAILS_ENV を指定します。本番ではこの指定を忘れると開発 DB を触ってしまう事故が起きるので注意。
# 開発(デフォルト)
$ rails db:migrate
# テスト
$ RAILS_ENV=test rails db:migrate
# 本番
$ RAILS_ENV=production rails db:migrate
本番運用での注意点
- 必ずバックアップをしてから流す。テーブル削除や列削除を含むマイグレーションは取り返しがつかない
- 大規模テーブルへの索引追加・カラム追加は長時間ロックする可能性がある。
algorithm: :concurrently(PostgreSQL)や、メンテナンスウィンドウを確保 - マイグレーションはデプロイの前か後かを明確に決めておく(互換性のないスキーマ変更は段階的に)
- 失敗時に部分適用にならないよう、複雑な処理は
reversibleブロックやsafety_assuredを活用 - CI で
db:migrateとdb:rollbackの両方を確認しておく
schema:load との使い分け
| シーン | 推奨 |
|---|---|
| 本番運用・既存 DB への差分反映 | db:migrate |
| 開発環境を一から作り直す | db:schema:load(高速) |
| テスト DB の初期化 | db:schema:load |
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- 新規プロジェクトの作成
- サーバーの起動
- マイグレーションファイルの作成
- マイグレーションの実行(migrate)
- モデルの作成
- 全ルートを確認
- Laravelのバージョンの確認方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?