新增项目数据库自检流程

This commit is contained in:
CN-JS-HuiBai
2026-04-10 23:44:46 +08:00
parent 7362bcf206
commit 3519003a77
2 changed files with 18 additions and 3 deletions

View File

@@ -235,15 +235,21 @@ async function ensureTable(tableName, tableSchema) {
}
async function checkAndFixDatabase() {
const envPath = path.join(__dirname, '..', '.env');
if (!fs.existsSync(envPath)) return;
// Check for DB host to see if we have configuration (could be in .env or environment)
if (!process.env.MYSQL_HOST && !fs.existsSync(path.join(__dirname, '..', '.env'))) {
console.log('[Database Integrity] No configuration found, skipping check.');
return false;
}
try {
for (const [tableName, tableSchema] of Object.entries(SCHEMA)) {
await ensureTable(tableName, tableSchema);
}
return true;
} catch (err) {
console.error('[Database Integrity] Startup schema check failed:', err.message);
// Rethrow to allow caller to decide if this is fatal
throw err;
}
}

View File

@@ -1418,7 +1418,16 @@ async function start() {
try {
console.log('🔧 Initializing services...');
// Ensure DB is ready before starting anything else
await checkAndFixDatabase();
try {
const dbFixed = await checkAndFixDatabase();
if (dbFixed) {
// Re-run the local checkDb() to update isDbInitialized and other status variables
await checkDb();
}
} catch (dbErr) {
console.warn('⚠️ Database initialization check encountered an error:', dbErr.message);
// We don't necessarily crash here, but users will see the setup screen if isDbInitialized is false
}
// Start services
latencyService.start();