【Laravel】特定のファイルだけmigrateする

Laravelで既存DBからSeederファイルを生成する方法

既に運用中のサイトでカラム追加などの操作を行いたいときとか。

通常は「php artisan migrate」で差分migrateが実行されるが、そこでエラーが出たりしたらひとまず下記で逃げ切る。

php artisan migrate:refresh --step=1 --path=/database/migrations/xxx_table.php

そもそもどんなエラーが出るか?

migrationでDB管理しているのにmigrate使わずSQLでテーブル作ったりしたら既にテーブル存在してるでエラーが出たりする。

そういった場合は、上記コマンドで通らないmigrateファイルをスキップして無理矢理通すこともできるが、根本解決にはならない。

なので力技でmigrationsテーブルに直接migrate情報を追加してやることで正常に戻す。

-- xxx_table:マイグレーションファイル名、n:バッチ回数
insert into migrations (migration, batch) values ('xxx_table', n);

ただし、DBの状態を正確に把握してからやらないと大変なことになるかもなので慎重に。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください