diff --git a/scripts/db-init.js b/scripts/db-init.js index 5fa73d3..5c0e16b 100644 --- a/scripts/db-init.js +++ b/scripts/db-init.js @@ -6,7 +6,7 @@ const cwd = path.resolve(__dirname, '..'); // get app root when inside /scripts async function main() { console.log("[DB Init] Starting database migration & initialization..."); - let connectionString = process.env.DATABASE_URL; + let connectionString = ""; try { const CONFIG_PATH = path.join(cwd, "data", ".db-config.json"); @@ -21,6 +21,12 @@ async function main() { console.error("[DB Init] Error reading .db-config.json", e); } + // Force environment variable if present (for Docker/DevOps consistency) + if (process.env.DATABASE_URL) { + connectionString = process.env.DATABASE_URL; + console.log("[DB Init] Using environment variable DATABASE_URL (Priority)."); + } + if (!connectionString) { console.warn("[DB Init] No DATABASE_URL found in env or config. Skipping push."); process.exit(0); diff --git a/src/db/index.ts b/src/db/index.ts index fc8ce66..0c5266e 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -18,10 +18,7 @@ function maskUrl(url: string | undefined) { export function getDb() { if (currentDb) return currentDb; - let connectionString = process.env.DATABASE_URL; - - console.log("[DB] Initializing connection..."); - console.log("[DB] Env DATABASE_URL:", maskUrl(process.env.DATABASE_URL)); + let connectionString = ""; try { const CONFIG_PATH = path.join(process.cwd(), "data", ".db-config.json"); @@ -30,15 +27,21 @@ export function getDb() { const config = JSON.parse(fs.readFileSync(CONFIG_PATH, "utf-8")); if (config.url) { connectionString = config.url; - console.log("[DB] Using saved database URL:", maskUrl(connectionString)); + console.log("[DB] Loaded saved database URL from config."); } - } else { - console.log("[DB] No saved config file found. Using environment variable."); } } catch (err) { console.error("[DB] Error reading config file:", err); } + // IMPORTANT: Environment variable MUST take precedence in container environments + if (process.env.DATABASE_URL) { + connectionString = process.env.DATABASE_URL; + console.log("[DB] Using environment variable (優先度高)."); + } + + console.log("[DB] Initializing connection with:", maskUrl(connectionString)); + if (!connectionString) { console.error("[DB] CRITICAL: No database connection string available!"); }