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

安装Laravel Passport后测试库迁移提示oauth_auth_codes表已存在如何解决

问题原因与解决方法

核心原因

Laravel Passport默认会自动注册自带的迁移逻辑,其内部的表存在性校验默认读取项目default数据库连接配置,不会跟随你命令行临时指定的testing连接切换,所以检测到主库已存在oauth相关表后直接抛出报错,和测试库本身有没有表无关。

修复步骤

  • 先在app/Providers/AppServiceProvider.php的register方法中添加代码,关闭Passport自动迁移:
public function register()
{
    \Laravel\Passport\Passport::ignoreMigrations();
}
  • 确认Passport迁移文件已经发布到项目database/migrations目录,未发布的话执行命令php artisan vendor:publish --tag=passport-migrations,手动发布的迁移文件没有硬编码连接,会自动适配命令行指定的数据库连接。
  • 校验config/database.php中testing连接的配置,确认数据库名、账号等信息完全独立于主库配置,没有误填主库的数据库名称。
  • 重新执行测试库迁移:php artisan migrate --database=testing,如果仍有报错可加--fresh参数强制重置测试库表结构(仅适用于测试环境,禁止在生产环境执行):php artisan migrate:fresh --database=testing

额外排查项

  • 检查项目中自定义的迁移脚本是否在类中硬编码了$connection属性为主库连接名,如有删除该属性即可让迁移跟随命令行指定的连接执行。
  • 如果有.env.testing配置文件,确认其中的数据库配置和主库.env不重复,避免实际连接的还是主库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:03