Laravel 回滚 migration
1) 回滚最近一次 migration batch
命令:
php artisan migrate:rollback
它会回滚 最后一个 batch,可能包含多个 migration。
例如你刚刚执行了:
php artisan migrate
这次跑了 3 个 migration,那么 rollback 会一次撤销这 3 个。
2) 回滚最近 N 个
比如最近 5 个:
php artisan migrate:rollback --step=5
3) 重新执行某个 migration
如果你改了 migration 文件,想重新跑:
php artisan migrate:refresh --step=1
等价于:
rollback 1 次
再 migrate 1 次
6) 重新跑全部 migration
开发环境常用:
php artisan migrate:fresh
这个会:
删掉所有表,再重新执行全部 migration
注意不是 rollback,而是 直接 drop 所有表。
如果带 seed:
php artisan migrate:fresh --seed
rollback 不生效的原因
很多时候 rollback 失败,是因为 down() 没写好。
例如:
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
Laravel rollback 本质执行的是:
migration 里的
down()方法
所以必须保证:
up()做什么,down()就完整反向撤销什么