対象
migrate実行後に、マイグレーションファイルのファイル名のみを変更してstatusを実行済にしたい人向け。
結論
マイグレーションファイルのupメソッド内をコメントアウトしてmigrateを実行します。
public function up()
{
// Schema::create('items', function (Blueprint $table) {
// $table->unsignedInteger('id');
// $table->string('name');
// });
}
※これは実行済のmigrationファイルのファイル名のみを変更した時だけを想定しています。
エラーの原因
既に実行済のマイグレーションファイルのファイル名を変更すると、新規のマイグレーションファイル扱いとなりmigrate実行前になる。
$ php artisan migrate:status
| No | 2023_03_21_192233_create_items_table
これで、migrateを実行すると既にテーブルやカラムが存在する状態なので表題のエラーが出る。
今までしていたエラー回避
ロールバック
developブランチなどにマージ前の作業ブランチでmigrateした時は、他のブランチに切り替える際都度ロールバックを行い不要なテーブルやカラムは元に戻した状態にする。
php artisan migrate:rollback --step=1
→レコードが全てなくなるので再度テストしたいときに面倒。developにマージ後にmigrateをする。
テーブル、カラムを削除
ロールバックは行わず、追加したテーブルやカラムをGUIツールやSQLなどで削除をしてmigrateを実行する。already exists~
のエラーはでずmigrate
できる。
→これも、レコードが全てなくなるので再度テストしたいときに面倒。
結論のコメントアウトについて
Schema::create~
をコメントアウトして実行することで、migrateは実行済状態になり、データも失われずにファイル名の変更だけができました。
他にいい方法などがあれば、コメントお待ちしおります。