Laravel项目安装Passport执行passport:install出现id字段数据截断报错
报错原因
该报错是oauth_clients表的id字段类型与插入值不匹配导致:Laravel Passport v8及以上版本默认使用UUID作为客户端主键,插入的id值为36位字符串,如果你生成的Passport迁移文件中id字段仍设为自增整型,长度不足以存储UUID,就会触发数据截断报错。
额外说明:php artisan passport:install命令仅负责生成加密密钥、创建默认OAuth客户端,本身不会向users表写入数据,该表无新增记录属于正常现象。
解决方案
你可以选择以下任意一种方式处理:
方案1:调整迁移文件适配UUID主键
- 找到项目
database/migrations目录下Passport生成的迁移文件,打开create_oauth_clients_table.php,将主键定义从$table->id();修改为$table->uuid('id')->primary(); - 同步修改其他关联表中
client_id字段的类型,将unsignedBigInteger改为uuid - 执行迁移命令更新表结构:
php artisan migrate - 重新执行
php artisan passport:install即可完成安装
方案2:配置Passport使用自增整型主键
如果你不需要UUID主键,可直接关闭Passport的UUID客户端配置:
- 打开
app/Providers/AppServiceProvider.php,在boot方法中添加以下代码:
use Laravel\Passport\Passport; public function boot() { // 关闭客户端UUID功能,使用自增ID作为主键 Passport::enableClientUuid(false); }
- 确认
oauth_clients表的id字段为默认自增整型 - 重新执行
php artisan passport:install即可完成安装
内容的提问来源于stack exchange,提问作者gjqeriqi
相关产品推荐
相关产品推荐

