Mysql
 sql >> база данни >  >> RDS >> Mysql

Node.js, Request, MySQL и Пулирането на връзки водят до поведение на безкрайно блокиране/замразяване?

Използвате синхронен цикъл за разгръщане на асинхронен ресурс. Не можете да направите това.

Вашият while цикъл запълва пула на базата данни и след това завършва отново и блокира при getConnection което след това блокира целия цикъл на събития Node.js.

Можете да използвате async пакет за изпълнение на асинхронни цикли while.

async#forever обаждането ще направи това, което се опитвате да постигнете.

Освен това вашият код пропуска връзки към базата данни. Трябва да поставите connection.end() първо в обратното повикване, освен ако не възнамерявате да използвате същата връзка отново. В противен случай грешка ще доведе до изтичане на връзка с базата данни.

pool.getConnection(function (err, connection) {
    if (err) throw err;
    connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
      connection.end(); // return to pool before evaluating error.
      if (err) throw err;
      console.log('The solution is: ', rows[0].solution);
    });
});


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да върна числовите данни за полета на всички резултати, използвайки 1 mySQL заявка?

  2. Пълнотекстово търсене винаги връща празен набор от резултати

  3. Команда за стандартно отклонение в SQL

  4. Проблем с mysqldump:опцията --defaults-extra-file не работи според очакванията

  5. Заявките заседнаха в междинния софтуер ActiveRecord::QueryCache