可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
In Laravel, there appears to be a command for creating a migration, but not removing.
Create migration command:
php artisan migrate:make create_users_table
If I want to delete the migration, can I just safely delete the corresponding migrations file within the database/migrations folder?
Migrations file:
2013_05_31_220658_create_users_table
回答1:
I accidentally created a migration with a bad name (command: php artisan migrate:make
). I did not run (php artisan migrate
) the migration, so I decided to remove it.
My steps:
- Manually delete the migration file under
app/database/migrations/my_migration_file_name.php
- Reset the composer autoload files:
composer dump-autoload
- Relax
If you did run the migration (php artisan migrate
), you may do this:
a) Run migrate:rollback
- it is the right way to undo the last migration (Thnx @Jakobud)
b) If migrate:rollback
does not work, do it manually (I remember bugs with migrate:rollback in previous versions):
- Manually delete the migration file under
app/database/migrations/my_migration_file_name.php
- Reset the composer autoload files:
composer dump-autoload
- Modify your database: Remove the last entry from the migrations table
回答2:
If the migration has been run (read: migrated) then you should roll back your migration to clear the history from your database table. Once you're rolled back you should be able to safely delete your migration file and then proceed with migrating again.
回答3:
You likely need to delete the entry from the migrations table too.
回答4:
php artisan migrate:fresh
Should do the job, if you are in development and the desired outcome is to start all over.
In production, that maybe not the desired thing, so you should be adverted. (The migrate:fresh command will drop all tables from the database and then execute the migrate command).
回答5:
I accidentally created two times create_users_table. It overrided some classes and turned rollback into ErrorException.
What you need to do is find autoload_classmap.php in vendor/composer folder and look for the specific line of code such as
'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',
and edit path. Then your rollback should be fine.
回答6:
I agree with the current answers, I just wanna add little more information.
A new feature has been added to Laravel 5.3 and above version that will allow you to back out a single migration:
php artisan migrate:rollback --step=1
after, Manually delete the migration file under database/migrations/my_migration_file_name.php
This is a great feature for when you run a migration
In this way, you can safely remove the migration in laravel only in 2 step
回答7:
I will rather do it manually
- Delete the model first (if you don't) need the model any longer
- Delete the migration from
...database/migrations
folder
- If you have already migrated i.e if you have already run
php artisan migrate
, log into your phpmyadmin or SQL(whichever the case is) and in your database, delete the table created by the migration
- Still within your database, in the migrations folder, locate the row with that migration file name and delete the row.
Works for me, hope it helps!
回答8:
This works for me:
- I deleted all tables in my database, mainly the migrations table.
php artisan migrate:refresh
in laravel 5.5.43