我正在使用node.js npm 模块mysql 来连接MySQL 数据库。
我看到有可能使用:
我对第二种情况有两个问题。
1)使用 pool.query 时出现错误、丢失连接是否有自动重新连接? (使用池时是否需要“处理断开连接”功能?
2)使用第一种方法我可以设置connection.on('error', function(){...})。在第二种情况下该怎么做? (pool.on('错误'...) ?)
1)如果我错了,请纠正我,但我认为在使用池查询时断开连接时没有自动连接的方法。这是一个很好的代码设计,可以让我们知道错误,并让我们决定在断开连接时做什么。
2)我们可以使用
pool.getConnection((err, con) => {})
这是我在运行查询之前用于检查连接的代码。希望有帮助。
connect: function ()
{
return new Promise((resolve, reject) => {
let pool = Mysql.createPool({
connectionLimit: config.mysql.connectionLimit,
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.password,
database: config.mysql.database
});
pool.getConnection((err, con) =>
{
try
{
if (con)
{
con.release();
resolve({"status":"success", "data":"MySQL connected.", "con":pool});
}
}
catch (err)
{
reject({"status":"failed", "error":`MySQL error. ${err}`});
}
resolve({"status":"failed", "error":"Error connecting to MySQL."});
});
});
}
您可以像这样设置池连接:
const mysql = require("mysql2");
const pool = mysql.createPool({
host: "localhost",
port: 3306,
user: "root",
password: "password",
database: "test",
}).promise();
//test the connection
(async () => {
try {
const connection = await pool.getConnection();
console.log("Database connected successfully");
// Release the connection back to the pool
connection.release();
} catch (error) {
console.error("Database connection error : ", error);
}
})();
module.exports = pool;