sql >> Database >  >> RDS >> Mysql

waarom zorgt deze mysql-fout ervoor dat nodejs crasht in plaats van naar de catch-functie te gaan?

Eigenlijk was @Quentine bijna bij het juiste eind...

Het is een "soort" bug in mysql2 ,ik gebruik sort-of omdat https://github.com/sidorares/node- mysql2/issues/902 stelt het ontwikkelteam van mysql2 voor is ok ermee.

het is een probleem met de manier waarop mysql2.pool de aanroep doorgeeft aan de gemaakte verbinding, die de uitzondering niet doorgeeft aan de inpakbelofte.

Uiteindelijk heb ik mijn eigen wrap-functie gemaakt om de verbinding + call-executie te maken, verpakt in de juiste afhandeling van de belofte.

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. Hoe meerdere records (rij) uit een kolom in mysql te selecteren?

  2. inno db isolatieniveaus en vergrendeling

  3. Overerving van klassen met .NET EF4.1 + MySQL

  4. sql-query om city pune te vervangen door mumbai en mumbai om pune in de tabel te vervangen