部署保险端项目和大屏
This commit is contained in:
75
insurance_backend/run-migration.js
Normal file
75
insurance_backend/run-migration.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const { sequelize } = require('./config/database.js');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
async function runMigration() {
|
||||
try {
|
||||
console.log('开始运行数据库迁移...');
|
||||
|
||||
// 测试数据库连接
|
||||
await sequelize.authenticate();
|
||||
console.log('✅ 数据库连接成功');
|
||||
|
||||
// 获取所有迁移文件
|
||||
const migrationsPath = path.join(__dirname, 'migrations');
|
||||
const migrationFiles = fs.readdirSync(migrationsPath)
|
||||
.filter(file => file.endsWith('.js'))
|
||||
.sort();
|
||||
|
||||
console.log(`找到 ${migrationFiles.length} 个迁移文件`);
|
||||
|
||||
// 确保 SequelizeMeta 表存在
|
||||
await sequelize.query(`
|
||||
CREATE TABLE IF NOT EXISTS \`SequelizeMeta\` (
|
||||
\`name\` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (\`name\`),
|
||||
UNIQUE KEY \`name\` (\`name\`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
|
||||
`);
|
||||
|
||||
// 检查哪些迁移已经运行过
|
||||
const [executedMigrations] = await sequelize.query(
|
||||
'SELECT name FROM SequelizeMeta ORDER BY name'
|
||||
);
|
||||
const executedNames = executedMigrations.map(row => row.name);
|
||||
|
||||
// 运行未执行的迁移
|
||||
for (const file of migrationFiles) {
|
||||
if (!executedNames.includes(file)) {
|
||||
console.log(`正在运行迁移: ${file}`);
|
||||
|
||||
try {
|
||||
const migration = require(path.join(migrationsPath, file));
|
||||
await migration.up(sequelize.getQueryInterface(), sequelize.constructor);
|
||||
|
||||
// 记录迁移已执行
|
||||
await sequelize.query(
|
||||
'INSERT INTO SequelizeMeta (name) VALUES (?)',
|
||||
{ replacements: [file] }
|
||||
);
|
||||
|
||||
console.log(`✅ 迁移 ${file} 执行成功`);
|
||||
} catch (error) {
|
||||
console.error(`❌ 迁移 ${file} 执行失败:`, error);
|
||||
throw error;
|
||||
}
|
||||
} else {
|
||||
console.log(`⏭️ 迁移 ${file} 已执行,跳过`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('🎉 所有迁移执行完成!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 迁移执行失败:', error);
|
||||
throw error;
|
||||
} finally {
|
||||
await sequelize.close();
|
||||
}
|
||||
}
|
||||
|
||||
// 运行迁移
|
||||
runMigration().catch(error => {
|
||||
console.error('迁移过程中发生错误:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user