新增项目数据库自检流程
This commit is contained in:
@@ -235,15 +235,21 @@ async function ensureTable(tableName, tableSchema) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function checkAndFixDatabase() {
|
async function checkAndFixDatabase() {
|
||||||
const envPath = path.join(__dirname, '..', '.env');
|
// Check for DB host to see if we have configuration (could be in .env or environment)
|
||||||
if (!fs.existsSync(envPath)) return;
|
if (!process.env.MYSQL_HOST && !fs.existsSync(path.join(__dirname, '..', '.env'))) {
|
||||||
|
console.log('[Database Integrity] No configuration found, skipping check.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (const [tableName, tableSchema] of Object.entries(SCHEMA)) {
|
for (const [tableName, tableSchema] of Object.entries(SCHEMA)) {
|
||||||
await ensureTable(tableName, tableSchema);
|
await ensureTable(tableName, tableSchema);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('[Database Integrity] Startup schema check failed:', err.message);
|
console.error('[Database Integrity] Startup schema check failed:', err.message);
|
||||||
|
// Rethrow to allow caller to decide if this is fatal
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1418,7 +1418,16 @@ async function start() {
|
|||||||
try {
|
try {
|
||||||
console.log('🔧 Initializing services...');
|
console.log('🔧 Initializing services...');
|
||||||
// Ensure DB is ready before starting anything else
|
// 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
|
// Start services
|
||||||
latencyService.start();
|
latencyService.start();
|
||||||
|
|||||||
Reference in New Issue
Block a user