You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vercel部署Next.js+Prisma+SQLite时数据库目录不存在报错修复

解决Vercel部署Next.js+Prisma+SQLite的目录不存在报错

问题原因

Vercel的无服务器函数运行环境中,除了/tmp目录外,其余目录均为只读状态,且每次函数调用结束后环境会被重置。你当前配置的相对路径./welisara.db指向的目录不可写,导致无法创建/打开SQLite数据库文件。

临时测试方案(不支持数据持久化)

修改数据库URL指向可写临时目录

将环境变量中的数据库路径改为Vercel唯一可写的/tmp目录:

DATABASE_URL="file:/tmp/welisara.db"
USER_DATABASE_URL="file:/tmp/userswelisara.db"
  • 注意:/tmp目录的内容会在函数调用结束后被清除,每次新的函数启动都会生成全新的空数据库,无法保留数据,仅适合临时验证功能。

确保Prisma初始化数据库

在API路由或Server Component的初始化逻辑中添加连接代码,确保函数启动时能自动创建数据库文件:

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

// 初始化数据库连接,触发文件创建
async function initDB() {
  await prisma.$connect();
}

// 在业务逻辑执行前调用初始化
await initDB();

持久化数据的推荐方案

由于SQLite的文件存储特性与Vercel无服务器环境的临时、分布式运行机制不兼容,若需要长期保留数据,建议改用云托管数据库:

  • 选择Prisma支持的远程数据库,如PostgreSQL(Neon)、MySQL(PlanetScale)、Supabase等
  • 修改环境变量为远程数据库的连接字符串,示例:
    DATABASE_URL="postgresql://user:password@hostname:port/dbname?schema=public"
    
  • 这类数据库专为云环境设计,能在Vercel的无服务器函数中稳定运行,且完全支持数据持久化。

内容的提问来源于stack exchange,提问作者Isuru Eranga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:02:07