gpt4 book ai didi

mysql getConnection() 不返回nodejs中的回调函数

转载 作者:行者123 更新时间:2023-11-29 09:45:40 26 4
gpt4 key购买 nike

我正在尝试从nodejs中的mysql连接池获取连接。但是池的 getConnection 方法不会返回回调函数。 (因此它不会显示任何错误或返回连接)。但我的 mysql 工作台显示已建立连接。当我使用连接时,它仍然不会在回调中返回任何内容。

   var pool = mysql.createPool({
connectionLimit: 10,
host: "localhost",
database: "database",
user: "root",
password: "password"
});

exports.query = function (query, params, callback) {
pool.getConnection(function (err, connection) {
if (err) {

console.log(err);
connection.release();
callback(err.code, null);
}
console.log("connected");
connection.query(query, params, function (err, results) {
connection.release();
if (!err) {
callback(null, results);

}
else {

callback(err.code, null);

}

});

connection.on('error', function (err) {
connection.release();
callback(err.code, null);
});

});

}

这是我使用数据库查询的地方。

 exports.getLevels= function(callback){
var query = 'SELECT * FROM levels';
db.query(query,null, function (err, results) {
if (err) {
console.log(err);
}
console.log('reached');
callback(err, results);
});
}

最佳答案

试试这个可能会有帮助

我正在使用这个 npm 包 mysql使用此命令

npm i --save mysql

我认为要么您有本地主机用户和远程用户,要么您的 mysql 实例未运行。确保您已经创建了一个可以在nodejs脚本中访问的本地用户,您可以从 here 获取帮助并使用 this 检查连接.

const MySQL_DB = require( "mysql" );
let DB_Pool = MySQL_DB.createPool( {
connectionLimit: 15,
multipleStatements: true,
host: "localhost",
user: "root",
password: "abcdefgh",
database: "working_db",
port: "3306"
} );

function GetDatabaseResponse( query ) {

return new Promise( ( resolve, reject ) => {
DB_Pool.getConnection( ( ConnectionErrorMessage, DB_LocalConnection ) => {
if ( ConnectionErrorMessage ) {
console.log( "DataBase Connection Failed" );
console.log( ConnectionErrorMessage );
resolve( ConnectionErrorMessage );
return;

} else {

DB_LocalConnection.query( query, ( ProcedureErrorMessage, ProcedureCallResult ) => {
DB_LocalConnection.release();
if ( ProcedureErrorMessage ) {
console.log( "DataBase Query Execution Failed" );
console.log( DB_ProcedureCall );
console.log( ProcedureErrorMessage );
resolve( ProcedureErrorMessage );
return;

} else {
resolve( ProcedureCallResult );
return;
}
} );
}
} );
} );
}

( async () => {
let query = 'SELECT * FROM levels';
let Result = await GetDatabaseResponse( query );
console.log( Result );
} )();

这是您的代码实现,在我这边工作正常。

databaseFile.js

const mysql = require( "mysql" );
var pool = mysql.createPool({
connectionLimit: 15,
multipleStatements: true,
host: "localhost",
user: "root",
password: "abcdefgh",
database: "working_db",
port: "3306"
});

module.exports =( query, callback) => {

pool.getConnection((err, connection) => {
if (err) {
console.log(err);
connection.release();
callback(err.code, null);
}
console.log("connected");
connection.query(query, (err, results) => {
connection.release();
if (!err) {
callback(null, results);
}
else {
callback(err.code, null);
}
});

connection.on('error',(err) => {
connection.release();
callback(err.code, null);

});

});
}

index.js

let GetBataBaseResponse = require("./databaseFile");

GetBataBaseResponse("Select * from tblagents",(error, result) => {
console.log("error",error);
console.log("result",result);
});

如果您仍有问题,请给我留言。

关于mysql getConnection() 不返回nodejs中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55737020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com