test-docker-connection.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const { Sequelize } = require('sequelize');
  2. const config = require('./config/config.json').development;
  3. console.log('Docker数据库配置:', {
  4. host: config.host,
  5. database: config.database,
  6. username: config.username,
  7. dialect: config.dialect
  8. });
  9. const sequelize = new Sequelize(config.database, config.username, config.password, {
  10. host: config.host,
  11. dialect: config.dialect,
  12. logging: console.log,
  13. pool: {
  14. max: 5,
  15. min: 0,
  16. acquire: 30000,
  17. idle: 10000
  18. },
  19. dialectOptions: {
  20. ssl: false,
  21. connectTimeout: 60000
  22. }
  23. });
  24. async function testDockerConnection() {
  25. try {
  26. console.log('\n正在测试Docker数据库连接...');
  27. await sequelize.authenticate();
  28. console.log('✅ Docker数据库连接成功!');
  29. // 测试查询
  30. console.log('\n正在测试查询...');
  31. const [results] = await sequelize.query('SELECT 1 as test, NOW() as current_time');
  32. console.log('✅ 查询测试成功:', results);
  33. // 检查数据库版本
  34. const [version] = await sequelize.query('SELECT VERSION() as version');
  35. console.log('MySQL版本:', version[0].version);
  36. // 测试连接池状态
  37. console.log('\n连接池状态:');
  38. console.log('- 总连接数:', sequelize.connectionManager.pool.size);
  39. console.log('- 可用连接数:', sequelize.connectionManager.pool.available);
  40. console.log('- 使用中连接数:', sequelize.connectionManager.pool.using);
  41. console.log('- 等待连接数:', sequelize.connectionManager.pool.waiting);
  42. } catch (error) {
  43. console.error('❌ Docker数据库连接失败:');
  44. console.error('错误类型:', error.name);
  45. console.error('错误代码:', error.code || error.original?.code);
  46. console.error('错误消息:', error.message);
  47. if (error.code === 'ECONNREFUSED') {
  48. console.error('\n🔍 连接被拒绝分析:');
  49. console.error('- Docker MySQL容器可能未启动');
  50. console.error('- 端口3306可能被占用');
  51. console.error('- 建议检查: docker ps | grep mysql');
  52. }
  53. } finally {
  54. await sequelize.close();
  55. console.log('\n数据库连接已关闭');
  56. }
  57. }
  58. testDockerConnection();