我正在尝试从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脚本中访问的本地用户,你可以从这里获得帮助,并检查使用它的连接。
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 );
} )();
这是您的代码实现,它在我这边工作正常。
数据库文件.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);
});
});
}
索引.js
let GetBataBaseResponse = require("./databaseFile");
GetBataBaseResponse("Select * from tblagents",(error, result) => {
console.log("error",error);
console.log("result",result);
});
如果您仍然有问题消息我。