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

已丢弃分支创建的迁移仍出现在master分支中

解决Laravel中已删除的Passport迁移仍被执行的问题

这种幽灵迁移的问题真的挺闹心的,我之前折腾Laravel的时候也碰到过类似的缓存残留问题,给你几个亲测有效的解决步骤:

1. 清空Laravel全量缓存

虽然php artisan optimize在Laravel 5.4之后被移除,但官方拆分了单独的缓存清理命令,先把这些缓存全部清一遍:

php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear

2. 清除迁移专属缓存

Laravel会单独缓存迁移文件的列表信息,哪怕你已经删除了物理迁移文件,缓存里可能还残留着旧记录,执行这个命令彻底清空迁移缓存:

php artisan migrate:clear

3. 生成优化版自动加载映射

普通的composer dump-autoload有时候清理不够彻底,加上-o参数生成优化后的自动加载映射,能确保旧的Passport迁移类被完全从自动加载体系中移除:

composer dump-autoload -o

4. 兜底检查自动加载类映射(可选)

如果上面的操作还没解决问题,可以直接打开vendor/composer/autoload_classmap.php文件,搜索Passport相关的迁移类名(比如CreateOauthClientsTable、CreateOauthAccessTokensTable这类),如果能找到对应的条目,手动删除后再重新执行composer dump-autoload -o。

5. 重启PHP服务(关键步骤!)

很多时候问题出在PHP的OPcache缓存上——OPcache会把已经加载过的类文件缓存到内存里,哪怕你删除了物理文件,它还是会用内存里的旧类信息。这时候必须重启你的PHP服务:

  • 如果你用的是Laravel内置服务器,关掉窗口重新启动即可
  • 如果是Nginx+PHP-FPM环境,重启PHP-FPM服务
  • 如果是Apache环境,重启Apache服务

完成以上步骤后,先执行php artisan migrate:status确认幽灵迁移记录已经消失,再执行php artisan migrate就只会运行你保留的迁移文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:44