javascriptnode.jsnode-mysql2

how to get mysql connection error log in lambda, why?


I wonder difference to main, function

environment nodejs 14.x mysql2 2.2.3

I made code,

call pool.getconnection in main, it's fine(success data from db) but can't get a data from function.

I wonder why this can't get from function

const pool = mysql.createPool({
  host: SERVICE_INFO.DB_HOST,
  database: SERVICE_INFO.DB_NAME,
  user: SERVICE_INFO.DB_USERNAME,
  password: SERVICE_INFO.DB_PASSWORD,
  port: SERVICE_INFO.DB_PORT,
  connectionLimit: 20,
})

async function getData() {
  try {
    const connection = await pool.getConnection(async conn => conn) // error why??
    await connection.query(~~~)
  } catch (error) {
   
  }

}
module.exports.main = async (event) => {
 const connection = await pool.getConnection(async conn => conn);
 const result = await connection.query(`~~~`);
 connection.release()

}

can't find error log only find Promise pending.. Promise { }


Solution

  • The getConnection method does not return a Promise, you should be able to retrieve the connection in the callback:

    function getData() {
      pool.getConnection(async (err, conn) => {
        try {
          if (err) throw 'Something went wrong';
          await conn.query('<query>');
          pool.releaseConnection(conn);
        } catch (error) {
          console.log(error);
        }
      });
    }
    

    You can find an example in the docs.