web-dev-qa-db-ja.com

安全に移行を削除しますLaravel

Laravelでは、移行を作成するためのコマンドはあるが削除はしていないようです。

移行コマンドを作成します。

php artisan migrate:make create_users_table

移行を削除したい場合は、database/migrationsフォルダー内の対応する移行ファイルを安全に削除できますか?

移行ファイル:

2013_05_31_220658_create_users_table
174
Globalz

誤った名前の移行を誤って作成しました(コマンド:php artisan migrate:make)。 I 実行しなかったphp artisan migrate)移行したので、削除することにしました。私のステップ:

  1. app/database/migrations/my_migration_file_name.phpの下の移行ファイルを手動で削除します
  2. 作曲家の自動ロードファイルをリセットします。composer dump-autoload
  3. リラックス

マイグレーションを実行した場合は(php artisan migrate)、これを行うことができます。

a)migrate:rollbackを実行します - 最後の移行を元に戻すのが正しい方法です(Thnx @Jakobud)

b)migrate:rollbackが機能しない場合は手動で実行してください(以前のバージョンのmigrate:rollbackのバグを覚えています):

  1. app/database/migrations/my_migration_file_name.phpの下の移行ファイルを手動で削除します
  2. 作曲家の自動ロードファイルをリセットします。composer dump-autoload
  3. データベースを変更します。マイグレーションテーブルから最後のエントリーを削除します
325
malisokan

移行が実行された場合(read:migrated)、移行をロールバックしてデータベーステーブルから履歴を消去する必要があります。ロールバックしたら、移行ファイルを安全に削除してから、移行を再開できます。

64
Jason Lewis

移行テーブルからもエントリを削除する必要があるかもしれません。

12
Stephane

誤ってcreate_users_tableを2回作成しました。いくつかのクラスをオーバーライドし、ロールバックをErrorExceptionにしました。

あなたがする必要があるのは、vendor/composerフォルダの中のautoload_classmap.phpを見つけて、以下のような特定のコード行を探すことです

'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',

パスを編集します。その後、あなたのロールバックは問題ないはずです。

7
JR Tan
 php artisan migrate:fresh

あなたが開発中であり、望ましい結果が最初からやり直すことであれば、仕事をするべきです。

プロダクションでは、それはおそらく望ましいことではないので、あなたは宣伝されるべきです。 (migrate:freshコマンドはデータベースからすべてのテーブルを削除してからmigrateコマンドを実行します)。

4
joash

私は現在の答えに同意します、私はちょうどもう少し情報を追加したいです。

Laravel 5.3以降のバージョンに新しい機能が追加されました。これにより、単一の移行を取り消すことができます。

php artisan migrate:rollback --step=1

後、手動でdatabase/migrations/my_migration_file_name.phpの下の移行ファイルを削除します

これはあなたがマイグレーションを実行するときに素晴らしい機能です

このようにして、あなたは安全に2ステップだけで安全に移行を削除することができます

2
Udhav Sarvaiya

これは私のために働く:

  1. データベース内のすべてのテーブル、主にmigrationsテーブルを削除しました。
  2. php artisan migrate:refresh

5.5.43のレベルで

0
ederrafo