Laravel中如何执行数据库回滚及迁移撤销步骤详解?

2026-05-07 09:381阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1045个文字,预计阅读时间需要5分钟。

Laravel中如何执行数据库回滚及迁移撤销步骤详解?

命令回滚无效,常见原因可能是 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 个全撤掉。

阅读全文
标签:Laravel

本文共计1045个文字,预计阅读时间需要5分钟。

Laravel中如何执行数据库回滚及迁移撤销步骤详解?

命令回滚无效,常见原因可能是 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 个全撤掉。

阅读全文
标签:Laravel