MSSQL Nodejs连接池不包含错误行号

我正在使用nodejs-mssql导出连接池。

    const sql = require('mssql/msnodesqlv8');
    const keys = require('../config/keys');
    // const util = require('util')
    
    //Need this package for windows authentication
    
    
    
    let config;
    console.log(keys)
    if (keys.db.state.toLowerCase() == "dev") {
        config = {
            user: keys.db.dev_user,password: keys.db.dev_password,server: keys.db.dev_server,// You can use 'localhost\\instance' to connect to named instance
            database: keys.db.dev_database,// driver:'msnodesqlv8',pool: {
                max: 10,min: 5,idleTimeoutMillis: 30000
            },options: {
                encrypt: false,instanceName: keys.db.dev_instanceName,enableArithAbort: true
            },//  port:57909,enableArithAbort: false
        }
    } 
    console.log(config)
    
    let connection = new sql.ConnectionPool(config).connect()
        .then(query => {
            return query
        })
        .catch(e => console.error("Database Trouble!  ",e))
    
    
    // pool.query = util.promisify(pool)
    
    
    module.exports = connection;

我要使用此连接:

router.post('/search',async function (req,res) {
    try{
         let pool = await connection
         await pool.query(`QUERY WITH SOME ERROR`)
     }

    catch(err){
        console.log(err)
    }

}

从上面您可以看到,当我运行其中有错误的查询时,错误消息并未包含有关查询源于我的代码的任何信息:

Trace: RequestError: Incorrect syntax near '2'.
    at handleError (E:\TQA\node_modules\mssql\lib\msnodesqlv8\request.js:258:21)
    at StreamEvents.emit (events.js:315:20)
    at E:\TQA\node_modules\msnodesqlv8\lib\reader.js:37:20
    at Array.forEach (<anonymous>)
    at routeStatementError (E:\TQA\node_modules\msnodesqlv8\lib\reader.js:30:14)
    at E:\TQA\node_modules\msnodesqlv8\lib\reader.js:299:13
    at E:\TQA\node_modules\msnodesqlv8\lib\driver.js:177:13
    at E:\TQA\node_modules\msnodesqlv8\lib\driver.js:157:13 {
  code: 'EREQUEST',originalError: [Error: [microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near '2'.] {
    sqlstate: '42000',code: 102
  },number: 102,state: '42000'
}

我知道我可以在有console.log(err)的任何地方添加console.trace(error.lineNumber),但是我打算将err存储在数据库中,并且我希望err包含该信息。

我最近从mysql切换到mssql,并且mysql软件包显示了有关该错误的所有信息。

iCMS 回答:MSSQL Nodejs连接池不包含错误行号

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1807084.html

大家都在问