Files
nxxmdata/backend/verify-database-connection.js

113 lines
3.8 KiB
JavaScript
Raw Normal View History

/**
* 验证数据库连接和数据
* @file verify-database-connection.js
* @description 重新验证数据库连接和项圈22012000107的数据
*/
const { sequelize } = require('./config/database-simple');
async function verifyDatabaseConnection() {
console.log('🔍 验证数据库连接和数据...\n');
try {
// 1. 测试数据库连接
console.log('1. 测试数据库连接...');
await sequelize.authenticate();
console.log('✅ 数据库连接成功');
// 2. 直接查询项圈22012000107的数据
console.log('\n2. 直接查询项圈22012000107的数据...');
const [results] = await sequelize.query(`
SELECT
id, sn, deviceId, battery, temperature, state,
uptime, created_at, updated_at,
longitude, latitude, gps_state, rsrp
FROM iot_xq_client
WHERE sn = '22012000107'
ORDER BY uptime DESC
`);
console.log(`找到 ${results.length} 条记录`);
results.forEach((row, index) => {
console.log(`\n记录${index + 1}:`);
console.log('ID:', row.id);
console.log('SN:', row.sn);
console.log('设备ID:', row.deviceId);
console.log('电量:', row.battery);
console.log('温度:', row.temperature);
console.log('状态:', row.state);
console.log('经度:', row.longitude);
console.log('纬度:', row.latitude);
console.log('GPS状态:', row.gps_state);
console.log('RSRP:', row.rsrp);
console.log('更新时间:', row.uptime);
console.log('创建时间:', row.created_at);
console.log('更新时间:', row.updated_at);
});
// 3. 查询所有项圈的最新数据
console.log('\n3. 查询所有项圈的最新数据...');
const [allResults] = await sequelize.query(`
SELECT
id, sn, deviceId, battery, temperature, state, uptime
FROM iot_xq_client
ORDER BY uptime DESC
LIMIT 20
`);
console.log('所有项圈的最新数据:');
allResults.forEach((row, index) => {
console.log(`${index + 1}. SN: ${row.sn}, 电量: ${row.battery}, 温度: ${row.temperature}, 状态: ${row.state}, 更新时间: ${row.uptime}`);
});
// 4. 检查数据库配置
console.log('\n4. 检查数据库配置...');
const config = sequelize.config;
console.log('数据库配置:');
console.log('主机:', config.host);
console.log('端口:', config.port);
console.log('数据库名:', config.database);
console.log('用户名:', config.username);
// 5. 检查表结构
console.log('\n5. 检查表结构...');
const [tableInfo] = await sequelize.query(`
DESCRIBE iot_xq_client
`);
console.log('iot_xq_client表结构:');
tableInfo.forEach(col => {
console.log(`${col.Field}: ${col.Type} (${col.Null === 'YES' ? '可空' : '非空'})`);
});
// 6. 检查是否有多个数据库或表
console.log('\n6. 检查当前数据库...');
const [currentDb] = await sequelize.query('SELECT DATABASE() as current_db');
console.log('当前数据库:', currentDb[0].current_db);
// 7. 检查是否有其他包含项圈数据的表
console.log('\n7. 检查其他可能包含项圈数据的表...');
const [tables] = await sequelize.query(`
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME LIKE '%collar%' OR TABLE_NAME LIKE '%xq%' OR TABLE_NAME LIKE '%iot%'
`);
console.log('相关表:');
tables.forEach(table => {
console.log('-', table.TABLE_NAME);
});
} catch (error) {
console.error('❌ 验证失败:', error.message);
console.error('错误详情:', error);
} finally {
process.exit(0);
}
}
// 运行验证
verifyDatabaseConnection().catch(console.error);