import mysql from 'mysql2/promise';
import 'dotenv/config';

// 引入database.js配置
import dbConfig from '../src/config/database';

// 尝试多种连接配置
async function testMySQLConnections() {
  console.log('🔍 测试MySQL连接配置...\n');
  
  // 使用database.js中的配置
  const config1 = {
    host: dbConfig.pool.config.host,
    port: dbConfig.pool.config.port,
    user: dbConfig.pool.config.user,
    password: dbConfig.pool.config.password,
    database: dbConfig.pool.config.database,
    connectTimeout: 5000
  };
  
  // 配置2: 不指定数据库名称
  const config2 = {
    ...config1,
    database: undefined
  };
  
  const configurations = [
    { name: 'database.js配置', config: config1 },
    { name: 'database.js配置(无数据库)', config: config2 }
  ];
  
  for (const { name, config } of configurations) {
    console.log(`\n🎯 尝试连接: ${name}`);
    console.log(`📌 配置:`, {
      host: config.host,
      port: config.port,
      user: config.user,
      database: config.database || '不指定'
    });
    
    try {
      const connection = await mysql.createConnection(config);
      console.log('✅ 连接成功！');
      
      // 测试简单查询
      const [rows] = await connection.execute('SELECT 1 as test');
      console.log('✅ 查询测试通过:', rows);
      
      // 如果指定了数据库，检查数据库是否存在
      if (config.database) {
        const [dbCheck] = await connection.execute(`SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ?`, [config.database]);
        if (dbCheck.length > 0) {
          console.log('✅ 数据库存在');
        } else {
          console.warn('⚠️  指定的数据库不存在');
        }
      }
      
      await connection.end();
      return { success: true, config };
      
    } catch (error) {
      console.error('❌ 连接失败:', error.message);
      console.error('🔍 错误代码:', error.code);
      
      if (error.code === 'ECONNREFUSED') {
        console.error('💡 可能原因: MySQL服务器未启动或网络不可达');
      } else if (error.code === 'ER_ACCESS_DENIED_ERROR') {
        console.error('💡 可能原因: 用户名或密码错误');
      } else if (error.code === 'ER_BAD_DB_ERROR') {
        console.error('💡 可能原因: 数据库不存在');
      }
    }
  }
  
  console.log('\n❌ 所有连接配置都失败了');
  console.log('💡 建议:');
  console.log('1. 检查MySQL服务器是否已启动');
  console.log('2. 确认用户名和密码正确');
  console.log('3. 确认数据库已创建');
  console.log('4. 检查网络连接');
  
  return { success: false };
}

// 执行测试
testMySQLConnections().then(result => {
  process.exit(result.success ? 0 : 1);
});