Mysql
 sql >> Baza danych >  >> RDS >> Mysql

dlaczego ten błąd mysql powoduje awarię nodejs zamiast przechodzenia do funkcji catch?

Właściwie @Quentine był blisko właściwej rzeczy...

Jest to "rodzaj" błąd w mysql2 , używam czegoś w rodzaju, ponieważ https://github.com/sidorares/node- mysql2/problemy/902 sugeruje zespół programistów mysql2 jest w porządku z nim.

jest to problem ze sposobem, w jaki mysql2.pool przekazuje wywołanie do utworzonego połączenia, które nie przekazuje wyjątku do opakowującej obietnicy.

Skończyło się na tym, że stworzyłem własną funkcję zawijania, aby utworzyć połączenie + wykonanie wywołania opakowane w odpowiednią obsługę obietnic.

import mysql = require('mysql2');
private async queryDB(query:string, useExecute: boolean = false, ...args:any[]) : Promise<any[]>
    {
        return new Promise<any[]>((resolve, reject)=>{
            for(var i = 0; i < args.length; ++i)
            {
                if(args[i]===undefined)
                    args[i] = null;
            }
            this.dbPool.getConnection((err, conn)=>{
                if(err){
                    reject(err);
                    return;
                }
                
                let cb = function(err: mysql.QueryError, results: any[], fields: mysql.FieldPacket[]) {
                    conn.release();
                    if(err)
                    {
                        reject(err);
                        return;
                    }
                    resolve(results);
                }
                if(useExecute)
                    conn.execute(query, args, cb);
                else
                    conn.query(query, args, cb);                
            });
        });
    }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się ze zdalnym serwerem MySQL

  2. Różne aktualizacje PyMySQL w jednym zapytaniu?

  3. Laravel i InnoDB

  4. Czy Laravel może obsługiwać aplikacje o dużym natężeniu ruchu?

  5. mysql wybierz aktualizację