Files
nxxmdata/backend/check-table-structure.js
2025-08-25 15:00:46 +08:00

53 lines
1.8 KiB
JavaScript

/**
* 检查并同步数据库表结构脚本
*/
const { sequelize } = require('./models/index');
async function checkAndSyncDatabase() {
try {
console.log('连接数据库...');
await sequelize.authenticate();
console.log('数据库连接成功');
// 强制同步数据库(这会删除现有表并重新创建)
console.log('\n开始同步数据库模型...');
await sequelize.sync({ force: true });
console.log('数据库模型同步完成');
// 检查创建的表
console.log('\n=== 检查创建的表 ===');
const [tables] = await sequelize.query("SHOW TABLES");
console.log('已创建的表:', tables.map(row => Object.values(row)[0]));
// 检查devices表结构
console.log('\n=== devices表结构 ===');
const [devicesFields] = await sequelize.query("DESCRIBE devices");
console.log('devices表字段:');
devicesFields.forEach(field => {
console.log(`- ${field.Field}: ${field.Type} (${field.Null === 'YES' ? 'NULL' : 'NOT NULL'})`);
});
// 检查animals表结构
console.log('\n=== animals表结构 ===');
const [animalsFields] = await sequelize.query("DESCRIBE animals");
console.log('animals表字段:');
animalsFields.forEach(field => {
console.log(`- ${field.Field}: ${field.Type} (${field.Null === 'YES' ? 'NULL' : 'NOT NULL'})`);
});
// 检查alerts表结构
console.log('\n=== alerts表结构 ===');
const [alertsFields] = await sequelize.query("DESCRIBE alerts");
console.log('alerts表字段:');
alertsFields.forEach(field => {
console.log(`- ${field.Field}: ${field.Type} (${field.Null === 'YES' ? 'NULL' : 'NOT NULL'})`);
});
} catch (error) {
console.error('操作失败:', error);
} finally {
await sequelize.close();
}
}
checkAndSyncDatabase();