mysql - 无法在节点中建立持久的 mysql 连接
问题描述
我有一个节点 mysql 连接,它曾经可以正常工作,但自从流量开始出现后,我遇到了一个奇怪的错误
Error: Connection lost: The server closed the connection.
这是我正在使用的课程
const mysql = require('mysql');
class Database {
constructor() {
this.connection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
port: 3306,
debug: false,
multipleStatements: false
});
}
query(sql, args) {
return new Promise((resolve, reject) => {
this.connection.query(sql, args, (err, rows) => {
if (err)
return reject(err);
resolve(rows);
});
});
}
close() {
return new Promise((resolve, reject) => {
this.connection.end(err => {
if (err)
return reject(err);
resolve();
});
});
}
}
module.exports = Database;
有人可以帮忙解释为什么会这样吗?
编辑:这就是我调用代码的方式
const database = new Database();
database.query(`select * from users...
`, [req.user.id, parseInt(req.body.after)])
.then(rows => {
appData[".."] = rows['ddd']
res.status(200).json(appData);
database.close()
}, err => {
return database.close().then(() => { throw err; })
})
.catch(err => {
console.log(err);
res.status(500).json("Database Error");
})
解决方案
首先创建文件 ex database.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
host: conf_core_sys.dbConfig.host,
user: conf_core_sys.dbConfig.user,
dateStrings: true,
password: conf_core_sys.dbConfig.pass,
database: conf_core_sys.dbConfig.dbName,
port:conf_core_sys.dbConfig.port,
debug: false
});
module.exports = pool;
exports.executeQuery = function (query, callback) {
pool.getConnection(function (err, connection) {
if (err) {
connection.release();
throw err;
}
connection.query(query, function (err, rows) {
connection.release();
if (!err) {
callback(null, {
rows: rows
});
}
});
connection.on('error', function (err) {
throw err;
return;
});
});
}
第二步 :
let database = require("database")
let sql ="SELECT * from users";
database.query(sql, function (error, results, fields) {
if (error) {
callback(results)
} else {
callback(results)
}
})
推荐阅读
- java - JDBC4 语法错误,但 MySQL 接受查询
- android - android 应用程序集成中的谷歌地图不能顺利拖动/移动
- python - 在循环中创建不同的函数 - Flask/Python
- php - 仅在专门创建的 div 中显示 php echo 输出,而不在主页中显示
- windows - Powershell - 任务栏图标,从不合并,隐藏标签,按应用 ID 分组
- google-app-engine - GAE Flex 自定义运行时随机关闭
- java - 连续随机变量表
- r - 有没有一种比较 2 个数据表的好方法,但是将 i 中的数据与第二个数据表中 i+1 的数据进行比较
- javascript - 正则表达式从字符串中提取数字和日期
- intellij-idea - 如何设置 intellij 以强制使用 VAR_NAME 格式的静态最终变量