Files
jiebanke/test-mysql-connection.js
2025-08-30 14:33:49 +08:00

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 };