マイグレーション(ロールバック作業)

2019/08/09

"ロールバック" とはDBの更新時に何らかの障害が起こったときに、前の状態にまで戻ることをいいます。

これは実際にDBを構築していてよくあります。

Laravelのマイグレーション機能にもこの "ロールバック" の機能はあります。

今回はロールバックについてのエントリーをします。

 

マイグレーションテーブル

マイグレーションを実行すると、マイグレーションファイルは「migrations」テーブルに登録されます。


show tables;

 

「migrations」テーブルを確認は以下のようになっています。


select * from migrations;

 

 

ロールバック

ロールバックを実行すると「migratinos」テーブルにあるマイグレーションの操作を一つ手前に戻します。artisanコマンドでロールバックを実行します。


php artisan migrate:rollback

 

ポイント

二つ前のマイグレーションファイルに戻りたい場合は php artisan migrate:rollback を2回実行します。
5.3以降は以下のコマンドが用意されています。


// バッチカラムの4まで戻る場合
php artisan migrate:rollback --step=4

再度、「migrations」テーブルの中身を確認すると一番下にあったマイグレーションが消えていることが確認できます。

ポイント

このあとの作業としては、ロールバックしたマイグレーションファイルを修正して再度以下のコマンドを実行します。


php artisan migrate

 

チュートリアル

前回やったチュートリアルの「employees」テーブルの変更を行います。

・「name」カラムの長さを変更(32→50)
・「name」カラムの後に「age」カラムを追加

このあとロールバックで元に戻します。

 

手順

 

1)更新用マイグレーションファイルの作成


php artisan make:migration modify_employees_table --table=employees

 

 

2)更新用マイグレーションファイルの編集


# database/migrations/xxxx_xx_xx_modify_employees_table.php
public function up()
{
  Schema::table('employees', function (Blueprint $table){
    // name カラムの長さを32から50に変更します。
    $table->string('name', 50)->change();

    // nameカラムの後にint型でageカラムを追加。デフォルト値に0を指定。
    $table->integer('age')->after('name')->default(0);
  });
}

public function down()
{
  Schema::table('employees', function (Blueprint $table) {
  $table->string('name', 32)->change();
  $table->dropColumn('age');
  });
}

 

ポイント

->after->default はカラムを追加するときに使用できる修飾子で "カラム修飾子" と呼ばれます。

 

3)マイグレーションの実行


php artisan migrate

 

4)テーブルを確認

変更した内容が反映されているか確認


desc employees;

 

 

5)ロールバックの実行


php artisan migrate:rollback

 

 

6)テーブルの確認


desc employees;

 

変更をかける前の状態になったことが確認できます。

ロールバックについては以上です。

 
Laravelのマイグレーションについてもっと理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。

ポイント
マイグレーション関連の掲載ページ

Chapter 5 データベースの利用
5.1 データベースを準備する
5.2 DBクラスの利用
5.3 クエリビルダ
5.4 マイグレーションとシーディング

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識