sql >> Database teknologi >  >> RDS >> Mysql

Node.js, Request, MySQL og Connection Pooling fører til uendelig blokering/frysningsadfærd?

Du bruger en synkron sløjfe til at implementere en asynkron ressource. Det kan du ikke.

Din while-løkke fylder databasepuljen og går derefter igen og blokerer getConnection som derefter blokerer hele Node.js hændelsesløkken.

Du kan bruge async pakke til at udføre asynkrone while-løkker.

async#forever call ville gøre det, du forsøger at opnå.

Din kode lækker også databaseforbindelser. Du skal indsætte connection.end() først i tilbagekaldet, medmindre du skal bruge den samme forbindelse igen. Ellers vil en fejl lække en databaseforbindelse.

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. Hvordan fjerner jeg emoji-tegn fra en streng?

  2. Flere forespørgsler VS Stored Procedure

  3. Hvad er hurtigere VÆLG * eller VÆLG "felt", når der kun kræves "felt".

  4. Vil du oprette forbindelse til MS SQL Server med Windows-godkendelse ved hjælp af Python?