Next.js14中Prisma连接Supabase报错:prepared statement "s0"不存在
Prisma连接Supabase报错(Next.js 14):prepared statement "s0" does not exist
操作流程
- 安装并初始化Prisma:
npm install prisma --save-dev npx prisma init --datasource-provider postgresql - 配置
.env文件中的Supabase数据库链接:DATABASE_URL="postgres://postgres.pnfqkgzzcnikiuchyljz:g2lIVbri0JazB7eV@aws-0-ap-southeast-1.pooler.supabase.com:6543/postgres" - 执行迁移命令:
npx prisma migrate dev
报错信息
Error: Schema engine error:
ERROR: prepared statement "s0" does not exist
解决方法
1. 切换数据库连接端口
Supabase的连接池端口(6543)可能存在预编译语句限制,尝试切换到主数据库端口5432:
DATABASE_URL="postgres://postgres.pnfqkgzzcnikiuchyljz:g2lIVbri0JazB7eV@aws-0-ap-southeast-1.pooler.supabase.com:5432/postgres"
2. 升级Prisma版本
旧版本Prisma与Supabase连接池存在兼容性问题,升级到最新稳定版:
npm update prisma --save-dev
升级后重新执行npx prisma migrate dev。
3. 禁用预编译语句
在DATABASE_URL末尾添加连接参数,强制禁用预编译语句:
DATABASE_URL="postgres://postgres.pnfqkgzzcnikiuchyljz:g2lIVbri0JazB7eV@aws-0-ap-southeast-1.pooler.supabase.com:6543/postgres?pg_prepared_statements=0"
4. 清理Prisma缓存并重置迁移
执行以下命令清理缓存并重置迁移(注意:会清空数据库数据,请先备份):
npx prisma generate npx prisma migrate reset --force
内容的提问来源于stack exchange,提问作者Shivam Kushwaha
相关产品推荐
相关产品推荐

