156 lines
5.5 KiB
JavaScript
156 lines
5.5 KiB
JavaScript
const mysql = require('mysql2');
|
|
|
|
// 测试环境数据库配置(先不指定数据库)
|
|
const testConfig = {
|
|
host: '192.168.0.240',
|
|
port: 3306,
|
|
user: 'root',
|
|
password: 'aiot$Aiot123'
|
|
};
|
|
|
|
// 生产环境数据库配置(先不指定数据库)
|
|
const prodConfig = {
|
|
host: '129.211.213.226',
|
|
port: 9527,
|
|
user: 'root',
|
|
password: 'aiotAiot123!'
|
|
};
|
|
|
|
function testConnection(config, environment) {
|
|
return new Promise((resolve) => {
|
|
console.log(`\n🔗 正在测试 ${environment} 数据库连接...`);
|
|
console.log(`主机: ${config.host}`);
|
|
console.log(`端口: ${config.port}`);
|
|
|
|
// 创建连接
|
|
const connection = mysql.createConnection(config);
|
|
|
|
connection.connect((err) => {
|
|
if (err) {
|
|
console.error('❌ 数据库连接失败:', err.message);
|
|
connection.end();
|
|
return resolve({ success: false, error: err.message });
|
|
}
|
|
|
|
console.log('✅ 数据库连接成功!');
|
|
|
|
// 测试查询
|
|
console.log('📊 执行测试查询...');
|
|
connection.query('SELECT 1 as test_result', (err, rows) => {
|
|
if (err) {
|
|
console.error('❌ 测试查询失败:', err.message);
|
|
connection.end();
|
|
return resolve({ success: false, error: err.message });
|
|
}
|
|
|
|
console.log('✅ 测试查询成功:', rows[0]);
|
|
|
|
// 获取数据库版本
|
|
connection.query('SELECT VERSION() as version', (err, versionRows) => {
|
|
if (err) {
|
|
console.error('❌ 获取版本失败:', err.message);
|
|
connection.end();
|
|
return resolve({ success: false, error: err.message });
|
|
}
|
|
|
|
console.log('📋 MySQL版本:', versionRows[0].version);
|
|
|
|
// 检查所有数据库
|
|
connection.query('SHOW DATABASES', (err, databases) => {
|
|
if (err) {
|
|
console.error('❌ 获取数据库列表失败:', err.message);
|
|
connection.end();
|
|
return resolve({ success: false, error: err.message });
|
|
}
|
|
|
|
console.log('\n📋 所有数据库:');
|
|
console.log('='.repeat(40));
|
|
databases.forEach(db => {
|
|
console.log(db.Database);
|
|
});
|
|
|
|
// 检查jiebandata数据库是否存在
|
|
const jiebandataExists = databases.some(db => db.Database === 'jiebandata');
|
|
console.log(`\n📊 jiebandata数据库: ${jiebandataExists ? '✅ 存在' : '❌ 不存在'}`);
|
|
|
|
if (jiebandataExists) {
|
|
// 获取jiebandata数据库中的表
|
|
connection.query(`
|
|
SELECT TABLE_NAME, TABLE_ROWS, CREATE_TIME, UPDATE_TIME
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'jiebandata'
|
|
ORDER BY TABLE_NAME
|
|
`, (err, tables) => {
|
|
if (err) {
|
|
console.error('❌ 获取表信息失败:', err.message);
|
|
connection.end();
|
|
return resolve({ success: false, error: err.message });
|
|
}
|
|
|
|
console.log(`\n📋 jiebandata数据库中的表:`);
|
|
console.log('='.repeat(80));
|
|
console.log('表名'.padEnd(25) + '行数'.padEnd(10) + '创建时间'.padEnd(20) + '更新时间');
|
|
console.log('='.repeat(80));
|
|
|
|
if (tables.length === 0) {
|
|
console.log('暂无表');
|
|
} else {
|
|
tables.forEach(table => {
|
|
console.log(
|
|
table.TABLE_NAME.padEnd(25) +
|
|
(table.TABLE_ROWS || '0').toString().padEnd(10) +
|
|
(table.CREATE_TIME ? new Date(table.CREATE_TIME).toLocaleString() : 'N/A').padEnd(20) +
|
|
(table.UPDATE_TIME ? new Date(table.UPDATE_TIME).toLocaleString() : 'N/A')
|
|
);
|
|
});
|
|
}
|
|
|
|
// 关闭连接
|
|
connection.end();
|
|
console.log('\n✅ 连接已正常关闭');
|
|
|
|
resolve({ success: true, databaseExists: jiebandataExists, tables: tables.length });
|
|
});
|
|
} else {
|
|
// 关闭连接
|
|
connection.end();
|
|
console.log('\n✅ 连接已正常关闭');
|
|
resolve({ success: true, databaseExists: false, tables: 0 });
|
|
}
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
console.log('🚀 开始测试结伴客系统数据库连接');
|
|
console.log('='.repeat(60));
|
|
|
|
// 测试测试环境
|
|
const testResult = await testConnection(testConfig, '测试环境');
|
|
|
|
console.log('\n' + '='.repeat(60));
|
|
|
|
// 测试生产环境
|
|
const prodResult = await testConnection(prodConfig, '生产环境');
|
|
|
|
console.log('\n' + '='.repeat(60));
|
|
console.log('📋 测试结果汇总:');
|
|
console.log('测试环境:', testResult.success ? '✅ 成功' : '❌ 失败');
|
|
console.log('生产环境:', prodResult.success ? '✅ 成功' : '❌ 失败');
|
|
|
|
if (testResult.success && testResult.tables > 0) {
|
|
console.log(`测试环境表数量: ${testResult.tables}`);
|
|
}
|
|
if (prodResult.success && prodResult.tables > 0) {
|
|
console.log(`生产环境表数量: ${prodResult.tables}`);
|
|
}
|
|
}
|
|
|
|
// 运行测试
|
|
main().catch(console.error);
|
|
|
|
// 导出测试函数供其他模块使用
|
|
module.exports = { testConnection, testConfig, prodConfig }; |