Ubuntu22.04下Next.js+Prisma连接Supabase报query-engine连接错误
故障说明
Ubuntu 22.04 LTS环境下,全新创建的Next.js项目集成Prisma ORM对接Supabase PostgreSQL数据库时,无论使用npm还是yarn作为包管理器,执行prisma migrate dev、npx prisma db push等所有Prisma命令均触发相同报错。已尝试更换全新初始化的Supabase数据库实例、核对DATABASE_URL环境变量配置、删除node_modules目录重装依赖、重新创建新项目,均无法定位问题,故障持续存在。
相关环境与配置信息
- 操作系统版本:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy
- Prisma版本:3.15.2
- 命令执行报错输出:
执行prisma migrate dev返回结果:
prisma migrate dev Environment variables loaded from .env Prisma schema loaded from prisma/schema.prisma Error: Get config: Unable to establish a connection to query-engine-node-api library Prisma CLI Version : 3.15.2
执行npx prisma db push返回结果:
npx prisma db push Environment variables loaded from .env Prisma schema loaded from prisma/schema.prisma Error: Get config: Unable to establish a connection to query-engine-node-api library Prisma CLI Version : 3.15.2
- prisma/schema.prisma文件配置:
generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id Int @id @default(autoincrement()) email String @unique name String? }
- .env环境变量配置:
DATABASE_URL="postgresql://postgres:EeVVG-password-wDiII@db.qpzh-url-opda.supabase.co:5432/postgres"
故障根因
该报错与数据库连接配置、依赖安装完整性、项目代码逻辑均无关联,核心原因是版本兼容性问题:
Ubuntu 22.04默认预装OpenSSL 3.0版本,而Prisma 3.15.2及更早的3.x系列版本,其内置的query-engine-node-api查询引擎编译时依赖OpenSSL 1.1.x版本的共享库,系统缺少对应版本依赖时就会触发引擎加载失败的报错,之前尝试的各类排查操作均未涉及依赖层的版本兼容问题,因此无法解决故障。
修复方案
选择以下任意一种方案操作即可解决问题,优先选择第一种:
- 升级Prisma至4.0及以上版本:Prisma从4.0版本开始正式适配OpenSSL 3.0,升级后无需额外修改系统配置即可正常运行。
npm用户执行:
yarn用户执行:npm install prisma@latest @prisma/client@latest
升级完成后直接执行之前的Prisma命令即可正常运行。yarn add prisma@latest @prisma/client@latest - 若因业务需求必须保留Prisma 3.15.2版本,手动为系统安装OpenSSL 1.1共享库即可:
安装完成后无需重启系统,直接执行Prisma命令即可恢复正常。wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
排查提示:该问题和Supabase服务状态、网络连接、项目配置文件格式均无关系,无需反复修改连接串、重装依赖或重建项目,这类操作对修复故障没有帮助。
内容的提问来源于stack exchange,提问作者officialrajdeepsingh
相关产品推荐
相关产品推荐

