Files
5why-analyzer/scripts/test-db-connection.js
donald 78efac64e2 Initial commit: 5 Why Root Cause Analyzer v1.0.0
Phase 0 & Phase 2 completed:
- Project structure setup
- Environment configuration (.env, .gitignore)
- Enterprise-grade dependencies (bcrypt, helmet, mysql2, etc.)
- Complete database schema with 8 tables + 2 views
- Database initialization scripts
- Comprehensive documentation

Database Tables:
- users (user management with 3-tier permissions)
- analyses (analysis records)
- analysis_perspectives (multi-angle analysis)
- analysis_whys (detailed 5 Why records)
- llm_configs (LLM API configurations)
- system_settings (system parameters)
- audit_logs (security audit trail)
- sessions (session management)

Tech Stack:
- Backend: Node.js + Express
- Frontend: React 18 + Vite + Tailwind CSS
- Database: MySQL 9.4.0
- AI: Ollama API (qwen2.5:3b)

Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 18:29:29 +08:00

90 lines
3.0 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
dotenv.config();
const dbConfig = {
host: process.env.DB_HOST || 'mysql.theaken.com',
port: parseInt(process.env.DB_PORT) || 33306,
user: process.env.DB_USER || 'A102',
password: process.env.DB_PASSWORD || 'Bb123456',
database: process.env.DB_NAME || 'db_A102'
};
async function testConnection() {
let connection;
try {
console.log('\n╔═══════════════════════════════════════╗');
console.log('║ Database Connection Test ║');
console.log('╚═══════════════════════════════════════╝\n');
console.log('📡 Attempting to connect to database...');
console.log(` Host: ${dbConfig.host}`);
console.log(` Port: ${dbConfig.port}`);
console.log(` Database: ${dbConfig.database}`);
console.log(` User: ${dbConfig.user}\n`);
connection = await mysql.createConnection(dbConfig);
console.log('✅ Connection successful!\n');
// 測試基本查詢
console.log('🔍 Testing basic queries...\n');
// 1. 檢查資料庫版本
const [versionResult] = await connection.execute('SELECT VERSION() as version');
console.log(` MySQL Version: ${versionResult[0].version}`);
// 2. 列出所有資料表
const [tables] = await connection.execute('SHOW TABLES');
console.log(` Tables found: ${tables.length}`);
if (tables.length > 0) {
console.log('\n📊 Available tables:');
tables.forEach((table, index) => {
const tableName = Object.values(table)[0];
console.log(` ${index + 1}. ${tableName}`);
});
// 3. 檢查每個資料表的記錄數
console.log('\n📈 Table statistics:');
for (const table of tables) {
const tableName = Object.values(table)[0];
const [countResult] = await connection.execute(`SELECT COUNT(*) as count FROM \`${tableName}\``);
console.log(` ${tableName}: ${countResult[0].count} rows`);
}
} else {
console.log('\n⚠ No tables found. Run "npm run db:init" to initialize the database.');
}
console.log('\n✅ All tests passed!\n');
} catch (error) {
console.error('\n❌ Connection failed!');
console.error(` Error: ${error.message}`);
if (error.code) {
console.error(` Error Code: ${error.code}`);
}
if (error.errno) {
console.error(` Error Number: ${error.errno}`);
}
console.log('\n💡 Troubleshooting tips:');
console.log(' 1. Check if MySQL server is running');
console.log(' 2. Verify host and port in .env file');
console.log(' 3. Confirm database credentials');
console.log(' 4. Check firewall settings');
console.log(' 5. Ensure database exists\n');
process.exit(1);
} finally {
if (connection) {
await connection.end();
console.log('🔌 Connection closed\n');
}
}
}
testConnection();