Laravel中如何执行数据库回滚及迁移撤销步骤详解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1045个文字,预计阅读时间需要5分钟。
命令回滚无效,常见原因可能是 Laravel 认为当前没有待回滚的批次。只需执行回退命令+ batch +最大值的那一批次即可。默认为回退1批。
例如,如果 php artisan migrate:status 显示所有迁移都已标记为 Ran,但 batch 列全是 0 或数值混乱,说明迁移表 migrations 没有被正确记录——可能是因为手动执行了 SQL、使用了 php artisan migrate --force 跳过了一些检查,或数据库连接指向了错误的库。
- 先运行
php artisan migrate:status,确认最后一行的batch值是否 ≥ 1 - 若全是
0,说明迁移从未被「正式登记」,migrate:rollback无从下手,得先补录或重跑 - 检查
config/database.php中的connections配置,确保migrations表在当前连接的库中存在且可读写
回退指定数量的迁移:--step 参数不是万能的
--step=2 看似直观,但它回退的是「最近执行的 2 批迁移」,不是「最近 2 个迁移文件」。一批迁移可能包含多个文件(比如你用 php artisan migrate 一次性跑了 5 个新文件,它们共享同一个 batch 值),这时 --step=1 就会把这 5 个全撤掉。
本文共计1045个文字,预计阅读时间需要5分钟。
命令回滚无效,常见原因可能是 Laravel 认为当前没有待回滚的批次。只需执行回退命令+ batch +最大值的那一批次即可。默认为回退1批。
例如,如果 php artisan migrate:status 显示所有迁移都已标记为 Ran,但 batch 列全是 0 或数值混乱,说明迁移表 migrations 没有被正确记录——可能是因为手动执行了 SQL、使用了 php artisan migrate --force 跳过了一些检查,或数据库连接指向了错误的库。
- 先运行
php artisan migrate:status,确认最后一行的batch值是否 ≥ 1 - 若全是
0,说明迁移从未被「正式登记」,migrate:rollback无从下手,得先补录或重跑 - 检查
config/database.php中的connections配置,确保migrations表在当前连接的库中存在且可读写
回退指定数量的迁移:--step 参数不是万能的
--step=2 看似直观,但它回退的是「最近执行的 2 批迁移」,不是「最近 2 个迁移文件」。一批迁移可能包含多个文件(比如你用 php artisan migrate 一次性跑了 5 个新文件,它们共享同一个 batch 值),这时 --step=1 就会把这 5 个全撤掉。

