113 lines
3.8 KiB
JavaScript
113 lines
3.8 KiB
JavaScript
/**
|
|
* 验证数据库连接和数据
|
|
* @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);
|