db.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const mysql = require('mysql2');
  2. const logger = require('../logger');
  3. // 从环境变量中获取数据库配置
  4. const dbConfig = {
  5. host: process.env.DB_HOST || '192.168.3.31',
  6. user: process.env.DB_USER || 'yangfei',
  7. password: process.env.DB_PASSWORD || 'yangfei',
  8. database: process.env.DB_NAME || 'myiot',
  9. waitForConnections: true,
  10. connectionLimit: 10, // 连接池大小
  11. queueLimit: 0, // 无限制排队
  12. connectTimeout: 10000, // 连接超时时间
  13. };
  14. // 创建连接池
  15. const pool = mysql.createPool(dbConfig);
  16. // 测试连接
  17. pool.getConnection((err, connection) => {
  18. if (err) {
  19. logger.error('MySQL2 连接失败:', err);
  20. return;
  21. }
  22. logger.info('MySQL2 数据库连接成功');
  23. connection.release(); // 释放连接回池中
  24. });
  25. // 处理连接错误
  26. pool.on('error', (err) => {
  27. logger.error('MySQL2 连接池错误:', err);
  28. if (err.code === 'PROTOCOL_CONNECTION_LOST') {
  29. // 重新连接
  30. pool.getConnection((err, connection) => {
  31. if (err) {
  32. logger.error('MySQL2 重新连接失败:', err);
  33. } else {
  34. logger.info('MySQL2 重新连接成功');
  35. connection.release();
  36. }
  37. });
  38. } else {
  39. throw err;
  40. }
  41. });
  42. module.exports = pool;