Next Auth+Prisma Adapter+PlanetScale Google登录失败求助
解决NextAuth Google Provider + Prisma Adapter + PlanetScale登录错误
问题根源
错误提示「The provided value for the column is too long for the column's type」以及前端的「Try signing in with a different account」,本质是MySQL默认的varchar(191)长度不足以容纳Google OAuth返回的token类字段,而你的Prisma Schema中仅用注释标注了@db.Text,并未实际启用该属性,导致插入Account记录时字段长度溢出。
解决方案
1. 修改Prisma Schema中的Account模型
将refresh_token、access_token、id_token字段的注释去掉,添加@db.Text属性,让这些字段使用MySQL的TEXT类型(无长度限制):
model Account { id String @id @default(cuid()) userId String type String provider String providerAccountId String refresh_token String? @db.Text // 启用TEXT类型存储长token access_token String? @db.Text // 启用TEXT类型存储长token expires_at Int? token_type String? scope String? id_token String? @db.Text // 启用TEXT类型存储长token session_state String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) @@index([userId]) }
2. 更新数据库与Prisma客户端
执行以下命令同步数据库变更并重新生成Prisma客户端:
npx prisma generate npx prisma db push
额外检查项
- 确认
DATABASE_URL环境变量正确指向PlanetScale数据库 - 检查Google云平台上的OAuth客户端ID/密钥是否与
env中的配置完全匹配 - 如果问题仍存在,可尝试将
providerAccountId也改为@db.Text(部分Google账户的ID可能超出varchar长度限制)
内容的提问来源于stack exchange,提问作者Daniel Guedes
相关产品推荐
相关产品推荐

