Node.js项目替换DB客户端为Prisma时,uuid_generate_v4()报错求助
解决Prisma迁移时
uuid_generate_v4()不存在的错误 问题原因
你的原数据库已经安装了PostgreSQL的uuid-ossp扩展,所以uuid_generate_v4()函数可以正常使用,但执行迁移的空数据库是全新创建的,默认没有这个扩展,导致Prisma执行迁移SQL时找不到该函数,触发42883错误。
解决方案
方案1:修改现有迁移文件
- 找到生成的初始迁移文件:
prisma/migrations/20221221095823_init/migration.sql - 在文件最开头添加启用扩展的SQL语句:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - 保存文件后,重新执行迁移命令:
npx prisma migrate dev
方案2:在Prisma Schema中配置自动加载扩展(推荐)
在prisma/schema.prisma的datasource块中添加扩展配置,让Prisma自动管理扩展的安装:
datasource db { provider = "postgresql" url = env("DATABASE_URL") extensions = [uuid_ossp] // 添加这行配置 }
配置完成后,执行以下命令重置并重新生成迁移:
npx prisma migrate reset npx prisma migrate dev --name init
后续步骤补充
完成迁移修复后,可继续执行原计划步骤:
- 恢复包含表和数据的原数据库
- 执行
npx prisma migrate resolve --applied 20221221095823_init标记初始迁移已应用
内容的提问来源于stack exchange,提问作者Boštjan Biber
相关产品推荐
相关产品推荐

