Laravelでテーブルを作ったけど、
モリ
あっ、ヤベっ!間違えた
ってこと、ありませんか?
カラムも定義も全然違うから一から作り直そう、という訳で、一つ前のMigration操作を元に戻す「ロールバック」をやってみました。
たぶん、本当は、テーブル定義を修正するマイグレーションファイルを作成して実行するのが筋?かもしれない。
スポンサーリンク
一つ前のMigrationを元に戻す
現在のテーブル一覧がこちら。itemsテーブルを削除したいです。
1 2 3 4 5 6 7 8 9 10 |
mysql> show tables; +------------------+ | Tables_in_recome | +------------------+ | items | | migrations | | password_resets | | users | +------------------+ 4 rows in set (0.00 sec) |
migrationsテーブルの中身がこちら。2018_12_15_211213_create_items_tableを巻き戻すことでitemsテーブルを消します。
1 2 3 4 5 6 7 8 9 |
mysql> select * from migrations; +----+------------------------------------------------+-------+ | id | migration | batch | +----+------------------------------------------------+-------+ | 1 | 2014_10_12_000000_create_users_table | 1 | | 2 | 2014_10_12_100000_create_password_resets_table | 1 | | 3 | 2018_12_15_211213_create_items_table | 2 | +----+------------------------------------------------+-------+ 3 rows in set (0.00 sec) |
ロールバックすると、マイグレーションファイルのdownメソッドが実行されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
class CreateItemsTable extends Migration { /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('items'); } } |
ロールバック実行コマンド
1 2 3 |
$ php artisan migrate:rollback Rolling back: 2018_12_15_211213_create_items_table Rolled back: 2018_12_15_211213_create_items_table |
ロールバック実行結果
itemsテーブルが消えました。
1 2 3 4 5 6 7 8 9 |
mysql> show tables; +------------------+ | Tables_in_recome | +------------------+ | migrations | | password_resets | | users | +------------------+ 3 rows in set (0.00 sec) |
migrationsテーブルの中身をみてみます。
1 2 3 4 5 6 7 8 |
mysql> select * from migrations; +----+------------------------------------------------+-------+ | id | migration | batch | +----+------------------------------------------------+-------+ | 1 | 2014_10_12_000000_create_users_table | 1 | | 2 | 2014_10_12_100000_create_password_resets_table | 1 | +----+------------------------------------------------+-------+ 2 rows in set (0.00 sec) |
マイグレーションのステータスを確認。
1 2 3 4 5 6 7 8 |
$ php artisan migrate:status +------+------------------------------------------------+ | Ran? | Migration | +------+------------------------------------------------+ | Y | 2014_10_12_000000_create_users_table | | Y | 2014_10_12_100000_create_password_resets_table | | N | 2018_12_15_211213_create_items_table | +------+------------------------------------------------+ |
もう一度テーブルを作り直す
これでLaravelでは2018_12_15_211213_create_items_tableは無いものとされている(作成されたばかりとおなじ状態)なので、このファイルに新たなitemsテーブルの定義を書き込み、再度マイグレーションすればOK!
1 2 3 |
$ php artisan migrate Migrating: 2018_12_15_211213_create_items_table Migrated: 2018_12_15_211213_create_items_table |
再度マイグレーションのステータスを確認します。
1 2 3 4 5 6 7 8 |
$ php artisan migrate:status +------+------------------------------------------------+ | Ran? | Migration | +------+------------------------------------------------+ | Y | 2014_10_12_000000_create_users_table | | Y | 2014_10_12_100000_create_password_resets_table | | Y | 2018_12_15_211213_create_items_table | +------+------------------------------------------------+ |
新しい定義のitemsテーブルが無事に作成されました。
スポンサーリンク
スポンサーリンク