You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5使用--path执行migrate:refresh时提示迁移文件未找到

解决Laravel migrate:refresh --path 报「Migration not found」的问题

我之前也碰到过一模一样的坑,这其实是migrate:refresh的执行逻辑在搞鬼,咱们一步步理清楚:

问题根源

migrate:refresh的工作流程是先回滚所有已运行的迁移,再重新执行迁移——注意这里的「所有」是指数据库migrations表中记录的全部迁移,不管你命令里指定了什么路径。

你报错里的那些oauth_*迁移文件,应该是之前通过Laravel Passport这类扩展安装的,它们的文件不在你指定的packages/package/src/database/migrations路径下。当migrate:refresh执行回滚步骤时,找不到这些文件,就抛出了「Migration not found」的错误。

解决方案

根据你的需求,有两种靠谱的处理方式:

方式一:只刷新指定包的迁移(推荐)

如果你只想更新自己包内的迁移,不想影响项目里其他已有的迁移,分两步执行即可:

  1. 先单独回滚指定路径的迁移:
    php artisan migrate:rollback --path=packages/package/src/database/migrations
    
  2. 再重新运行指定路径的迁移:
    php artisan migrate --path=packages/package/src/database/migrations
    

这两步组合起来,效果和migrate:refresh完全一致,而且不会碰其他迁移文件。

方式二:刷新所有迁移(如果确实需要)

如果你要刷新项目中所有的迁移,那得把所有迁移的路径都传给migrate:refresh,比如默认的项目迁移路径加上你的包路径:

php artisan migrate:refresh --path=database/migrations --path=packages/package/src/database/migrations

这样回滚阶段就能找到所有已运行的迁移文件,不会再报错。

额外验证小技巧

可以先打开数据库的migrations表,看看里面记录的所有迁移文件,确认哪些是你需要处理的,这样能更精准地选择解决方案。

内容的提问来源于stack exchange,提问作者Dorin Niscu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:15:29