Files
ai-showcase-platform/database_connection_test.js

77 lines
2.4 KiB
JavaScript

const mysql = require('mysql2/promise');
// 資料庫配置
const dbConfig = {
host: 'mysql.theaken.com',
port: 33306,
user: 'AI_Platform',
password: 'Aa123456',
database: 'db_AI_Platform',
charset: 'utf8mb4',
timezone: '+08:00'
};
async function testDatabaseConnection() {
let connection;
try {
console.log('🔌 正在連接資料庫...');
console.log(`主機: ${dbConfig.host}:${dbConfig.port}`);
console.log(`資料庫: ${dbConfig.database}`);
console.log(`用戶: ${dbConfig.user}`);
// 建立連接
connection = await mysql.createConnection(dbConfig);
console.log('✅ 資料庫連接成功!');
// 測試查詢
const [rows] = await connection.execute('SELECT VERSION() as version');
console.log(`📊 MySQL版本: ${rows[0].version}`);
// 檢查資料表
const [tables] = await connection.execute(`
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.tables
WHERE table_schema = '${dbConfig.database}'
ORDER BY TABLE_NAME
`);
console.log('\n📋 資料表列表:');
console.log('─'.repeat(50));
tables.forEach(table => {
console.log(`${table.TABLE_NAME.padEnd(25)} | ${table.TABLE_ROWS || 0} 筆記錄`);
});
// 檢查用戶數量
const [userCount] = await connection.execute('SELECT COUNT(*) as count FROM users');
console.log(`\n👥 用戶數量: ${userCount[0].count}`);
// 檢查競賽數量
const [compCount] = await connection.execute('SELECT COUNT(*) as count FROM competitions');
console.log(`🏆 競賽數量: ${compCount[0].count}`);
// 檢查評審數量
const [judgeCount] = await connection.execute('SELECT COUNT(*) as count FROM judges');
console.log(`👨‍⚖️ 評審數量: ${judgeCount[0].count}`);
console.log('\n🎉 資料庫連接測試完成!');
} catch (error) {
console.error('❌ 資料庫連接失敗:', error.message);
console.error('請檢查以下項目:');
console.error('1. 資料庫主機是否可達');
console.error('2. 連接埠是否正確');
console.error('3. 用戶名和密碼是否正確');
console.error('4. 資料庫是否存在');
console.error('5. 用戶是否有足夠權限');
} finally {
if (connection) {
await connection.end();
console.log('🔌 資料庫連接已關閉');
}
}
}
// 執行測試
testDatabaseConnection();