Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mengapa kesalahan mysql ini menyebabkan nodejs macet alih-alih pergi ke fungsi tangkap?

Sebenarnya, @Quentine mendekati hal yang benar...

Ini adalah "semacam" bug di mysql2 , saya menggunakan sort-of karena https://github.com/sidorares/node- mysql2/issues/902 menyarankan tim pengembangan mysql2 baik-baik saja dengan itu.

ini adalah masalah dengan cara mysql2.pool meneruskan panggilan ke koneksi yang dibuat, yang tidak meneruskan pengecualian ke janji pembungkus.

Saya akhirnya membuat fungsi pembungkus sendiri untuk membuat koneksi + eksekusi panggilan yang dibungkus dengan penanganan janji yang tepat.

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. Nilai dropdownlist dinamis dari database

  2. Codeigniter mengelola peran pengguna

  3. Periksa apakah kolom ada, jika tidak, tambahkan MySQL melalui PHP

  4. Dapatkan utas terbaru yang tidak diikuti oleh pengguna

  5. Menemukan fungsi pelarian yang lemah untuk MySql, bagaimana cara memanfaatkannya?