カテゴリ: Laravel 更新日: 2025/11/17

Laravelでマイグレーションをロールバック・再実行する方法をやさしく解説!

Laravelでマイグレーションをロールバック・再実行する方法
Laravelでマイグレーションをロールバック・再実行する方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelでテーブルの構造を変更したいときに、マイグレーションをやり直す方法ってありますか?」

先生

「ありますよ。Laravelではマイグレーションをロールバック(取り消し)したり、再実行したりするコマンドが用意されています。」

生徒

「ロールバックって、どういう意味ですか?」

先生

「ロールバックとは、実行したマイグレーションを元の状態に戻すことです。つまり、テーブルを作る前の状態に戻す感じですね。それでは詳しく見ていきましょう!」

1. Laravelのマイグレーションとは?

1. Laravelのマイグレーションとは?
1. Laravelのマイグレーションとは?

Laravelのマイグレーション(Migration)は、データベースのテーブル構造をコードで管理する仕組みです。マイグレーションファイルには、「テーブルを作る」「カラムを追加する」といった変更内容が書かれており、コマンドを使って簡単に実行できます。

たとえば、次のようにphp artisan migrateコマンドを実行すると、テーブルが自動的に作成されます。


php artisan migrate

しかし、マイグレーション内容を間違えたり、カラム名を修正したい場合もあります。そんなときに使うのがロールバックです。

2. マイグレーションをロールバックするとは?

2. マイグレーションをロールバックするとは?
2. マイグレーションをロールバックするとは?

ロールバックとは、直前に実行したマイグレーションを取り消して、データベースを以前の状態に戻すことを意味します。これは「一度実行したテーブル作成処理を取り消す」と考えるとわかりやすいでしょう。

たとえば、次のようにコマンドを実行します。


php artisan migrate:rollback

このコマンドを実行すると、直前のマイグレーション処理が取り消され、テーブルが削除されます。実際には、マイグレーションファイルに定義されたdown()メソッドの処理が実行されます。

もし複数回分を一度にロールバックしたい場合は、--stepオプションをつけます。


php artisan migrate:rollback --step=2

これで直近の2回分のマイグレーションを取り消すことができます。

3. すべてのマイグレーションを取り消す方法

3. すべてのマイグレーションを取り消す方法
3. すべてのマイグレーションを取り消す方法

全てのマイグレーションを一度に取り消したい場合は、次のコマンドを使います。


php artisan migrate:reset

このコマンドを実行すると、すべてのマイグレーションがロールバックされ、データベース内の全てのテーブルが削除されます。開発中に「一からやり直したい」ときに便利です。

4. ロールバック後に再実行する方法

4. ロールバック後に再実行する方法
4. ロールバック後に再実行する方法

マイグレーションをロールバックしたあとに、もう一度すべてのマイグレーションを実行したい場合は、次のコマンドを使います。


php artisan migrate:refresh

このコマンドは、次の2つの処理を自動で行います。

  • ① すべてのマイグレーションをロールバック
  • ② 再度すべてのマイグレーションを実行

つまり、データベースを一度まっさらな状態に戻して、最新のテーブル構造を再構築してくれます。

また、マイグレーションの実行と同時にSeeder(初期データ投入)を行いたい場合は、--seedオプションをつけます。


php artisan migrate:refresh --seed

これで、データベースの構造をリセットしながら、テストデータや初期データを再投入できます。

5. ロールバックとリフレッシュの違い

5. ロールバックとリフレッシュの違い
5. ロールバックとリフレッシュの違い

ここで、rollbackrefreshの違いを整理しておきましょう。

コマンド 動作内容
php artisan migrate:rollback 直前のマイグレーションだけを取り消す
php artisan migrate:reset すべてのマイグレーションを取り消す
php artisan migrate:refresh マイグレーションをすべてリセットして再実行する

開発中に「一部の修正をやり直したい」ときはrollbackを、「全体をやり直したい」ときはrefreshを使うと覚えておくと便利です。

6. よくあるエラーと対処法

6. よくあるエラーと対処法
6. よくあるエラーと対処法

マイグレーションをロールバックや再実行するときに、次のようなエラーが出ることがあります。


Base table or view not found

これは、すでに削除されたテーブルを再度削除しようとしたときなどに発生します。その場合は、migrate:freshを使って、すべてのテーブルを削除してから再作成すると解決します。


php artisan migrate:fresh --seed

このコマンドは、既存のテーブルをすべて削除してから、新しい状態のマイグレーションを再実行します。開発中の初期化に最適です。

7. まとめ:マイグレーションをやり直して柔軟に開発しよう

7. まとめ:マイグレーションをやり直して柔軟に開発しよう
7. まとめ:マイグレーションをやり直して柔軟に開発しよう

Laravelのマイグレーションでは、rollbackrefreshなどのコマンドを活用することで、データベースの構造を柔軟に調整できます。開発中は何度も試行錯誤することが多いので、これらのコマンドを使いこなせると非常に便利です。安全に変更を管理しながら、理想のデータベース設計を進めていきましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)