在 Linux 服务器上部署时遇到以下错误:
数据库连接失败: Error [PrismaClientInitializationError]: Error querying the database: Error code 14: Unable to open the database file
- 文件权限问题:数据库文件或目录没有正确的读写权限
- 路径问题:相对路径在容器环境中可能不正确
- 目录不存在:数据库文件所在的目录不存在
-
运行修复脚本:
bun run db:fix
-
初始化数据库:
bun run db:init
-
检查环境变量:
echo $DATABASE_URL
确保
DATABASE_URL设置正确,例如:DATABASE_URL="file:/app/data/database.db" -
创建数据目录:
mkdir -p /app/data chmod 755 /app/data
-
设置文件权限(如果数据库文件已存在):
chmod 644 /app/data/database.db
-
生成 Prisma 客户端:
bunx prisma generate
-
推送数据库模式:
bunx prisma db push
-
初始化数据:
bun run db:init
如果使用 Docker 部署,确保:
-
数据目录挂载:
# docker-compose.yml volumes: - ./data:/app/data
-
环境变量设置:
environment: - DATABASE_URL=file:/app/data/database.db
-
重新构建镜像:
docker-compose down docker-compose build --no-cache docker-compose up -d
运行健康检查确认数据库连接正常:
bun run health:check如果看到 "✓ 健康检查通过",说明问题已解决。
- 使用绝对路径:在生产环境中使用绝对路径而不是相对路径
- 正确设置权限:确保应用进程有读写数据库文件的权限
- 数据持久化:在 Docker 部署中正确挂载数据卷
A: 检查以下几点:
- 确认数据库文件路径是否正确
- 检查文件和目录权限
- 确认 Prisma 客户端已正确生成
- 查看详细错误日志
A: 确保正确挂载数据卷:
volumes:
- ./data:/app/dataA: 检查文件所有者和权限:
ls -la /app/data/
chown -R nextjs:nodejs /app/data
chmod 755 /app/data
chmod 644 /app/data/database.db如果问题仍然存在,请提供以下信息:
- 完整的错误日志
- 环境变量配置
- 文件权限信息:
ls -la /app/data/ - 系统信息:
uname -a