From ab615824876a29a9b6e1198b46c947c50ccac0f9 Mon Sep 17 00:00:00 2001 From: yuyx <237899745@qq.com> Date: Thu, 27 Nov 2025 21:07:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(database):=20=E8=AF=BB=E5=8F=96=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8FDATABASE=5FPATH=E8=80=8C=E9=9D=9E?= =?UTF-8?q?=E7=A1=AC=E7=BC=96=E7=A0=81=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前硬编码为 ftp-manager.db,导致 .env 中的 DATABASE_PATH 无效。 修复: - 读取 DATABASE_PATH 环境变量 - 默认路径改为 ./data/database.db - 自动创建数据库目录 - 启动时打印数据库路径便于确认 ⚠️ 升级注意:旧用户需要迁移数据库文件: mv backend/ftp-manager.db backend/data/database.db 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- backend/database.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/backend/database.js b/backend/database.js index 4bf88dc..1fdd5c3 100644 --- a/backend/database.js +++ b/backend/database.js @@ -1,10 +1,30 @@ +// 加载环境变量(确保在 server.js 之前也能读取) +require('dotenv').config(); + const Database = require('better-sqlite3'); const bcrypt = require('bcryptjs'); const path = require('path'); +const fs = require('fs'); const crypto = require('crypto'); +// 数据库路径配置 +// 优先使用环境变量 DATABASE_PATH,默认为 ./data/database.db +const DEFAULT_DB_PATH = path.join(__dirname, 'data', 'database.db'); +const dbPath = process.env.DATABASE_PATH + ? path.resolve(__dirname, process.env.DATABASE_PATH) + : DEFAULT_DB_PATH; + +// 确保数据库目录存在 +const dbDir = path.dirname(dbPath); +if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }); + console.log(`[数据库] 创建目录: ${dbDir}`); +} + +console.log(`[数据库] 路径: ${dbPath}`); + // 创建或连接数据库 -const db = new Database(path.join(__dirname, 'ftp-manager.db')); +const db = new Database(dbPath); // 启用外键约束 db.pragma('foreign_keys = ON');