Mysql getConnection()不支持';t在nodejs中返回回调函数
我正在尝试从nodejs中的mysql连接池获取连接。但是池的getConnection方法不返回回调函数。(因此它不会显示任何错误或返回连接)。但是我的mysql工作台显示已经建立了连接。但是,当我使用连接时,它不会在回调中返回任何内容Mysql getConnection()不支持';t在nodejs中返回回调函数,mysql,node.js,database,Mysql,Node.js,Database,我正在尝试从nodejs中的mysql连接池获取连接。但是池的getConnection方法不返回回调函数。(因此它不会显示任何错误或返回连接)。但是我的mysql工作台显示已经建立了连接。但是,当我使用连接时,它不会在回调中返回任何内容 var pool = mysql.createPool({ connectionLimit: 10, host: "localhost", database: "database", user: "root
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包 使用此命令
npm i --save mysql
我认为要么您有本地主机用户和远程用户,要么您的mysql实例没有运行。确保您已经创建了一个在nodejs脚本中访问的本地用户,您可以从中获取帮助并使用检查连接
这是您的代码实现,在我这方面运行良好。
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);
});
});
}
let GetBataBaseResponse = require("./databaseFile");
GetBataBaseResponse("Select * from tblagents",(error, result) => {
console.log("error",error);
console.log("result",result);
});
index.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);
});
});
}
let GetBataBaseResponse = require("./databaseFile");
GetBataBaseResponse("Select * from tblagents",(error, result) => {
console.log("error",error);
console.log("result",result);
});
如果您仍然有问题消息me。我似乎无法将
pool.getConnection
包装到函数中。当我在函数外部单独运行它时,回调被返回。(这意味着我在创建池后立即添加了pool.getConnection
,只是为了看看会发生什么,它工作正常,但不是这样。我可以连接到getResponse
方法所在的同一文件中的池。我也可以从另一个本地函数访问它。)(我可以从另一个本地函数调用getResponse
方法。但一旦我导出该函数,它就会停止正确连接。我已经更新了答案。当我使用错误的凭据时,它就会崩溃。但是这个具有正确凭据的实现工作正常。我尝试了这个方法。只要我像您一样直接查询数据库,它就会工作完成了。但是如果我尝试在导出的函数中执行相同的操作,则回调不会返回。我已更新了我的问题,以显示在导出的函数中使用数据库查询的位置。