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

Laravel中db:clear命令是否应截断Passport相关表?

问题分析与解答

首先明确:Laravel 8.x 核心源码里没有db:clear这个命令,它要么是你的项目自定义添加的Artisan命令,要么来自某个第三方扩展包。

关于你的核心疑问:你的预期完全没问题——按照命令描述的“清除除Passport和Laravel表之外的所有表”,Passport关联的oauth_access_tokens、oauth_auth_codes等表本应被保留,实际被截断是命令的实现逻辑和描述不匹配导致的。

问题原因

Passport的核心业务表就是以oauth_为前缀的这几张,命令的排除规则大概率存在漏洞:比如只硬编码了少数Passport表名、或者用了错误的前缀匹配(比如只匹配passport_而非oauth_),没把这些oauth_表纳入排除列表。

解决建议

  1. 定位命令来源:在项目的app/Console/Commands目录下查找对应清理命令的定义文件;如果是第三方包提供的,检查composer.json的依赖项,排查带数据库清理功能的扩展。
  2. 修正排除逻辑:
    • 若能修改命令代码,直接把所有oauth_*表添加到排除列表;
    • 也可以改用Laravel原生的db:wipe命令,通过--except参数手动指定要保留的表,示例:
      php artisan db:wipe --except=users,oauth_access_tokens,oauth_auth_codes,oauth_personal_access_clients,oauth_refresh_tokens
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:55:21