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