首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql node.js断续连接问题

问Mysql node.js断续连接问题
EN

Stack Overflow用户
提问于 2018-06-11 16:03:47
回答 1查看 1K关注 0票数 1

在我的node.js应用程序中,我使用mysql库进行数据库连接。

当我启动我的节点服务器时,我可以很好地查询数据库--没有问题。

当我在5分钟后查询数据库时,服务器返回以下错误:

代码语言:javascript
复制
{"code":"PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR","fatal":false}

如果我重新启动我的node.js服务器,我可以再次查询,没有任何问题,…

这是我的密码

代码语言:javascript
复制
const mysql = require('mysql');


let connection = mysql.createPool({
  host: config.mysql.host,
  user: config.mysql.user,
  password: config.mysql.password,
  database: config.mysql.database
});


router.post('/subscription', (req, res) => {
  const user = req.body;
  const q = 'INSERT into Subscription SET ?';
  connection.query(q, user, (err, results) => {
    if (err)
      return res.json(err);
    return res.json(results);
  });
});

我使用过mysql.createConnection和mysql.createPool…。还尝试用connection.end…手动结束连接。。

两个结果的结尾都是相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 18:35:53

您需要从池中获得一个连接并使用它,而不是查询池本身。当从池获得连接时,池将确保从池获得有效连接。所以你的代码是:

代码语言:javascript
复制
const mysql = require('mysql');


let pool = mysql.createPool({
  host: config.mysql.host,
  user: config.mysql.user,
  password: config.mysql.password,
  database: config.mysql.database
});


router.post('/subscription', (req, res) => {
  const user = req.body;
  const q = 'INSERT into Subscription SET ?';
  pool.getConnection(function(err, connection) {
     if (err)
       return res.json(err);

     connection.query(q, user, (err, results) => {
       if (err)
         return res.json(err);
       return res.json(results);
     });
  })
});

更新

您不需要执行单独的pool.getConnection和connection.query,您可以将它们组合成一个pool.query,它将得到一个连接,执行查询并释放连接。因此,更新的代码将是:

代码语言:javascript
复制
const mysql = require('mysql');

let pool = mysql.createPool({
  host: config.mysql.host,
  user: config.mysql.user,
  password: config.mysql.password,
  database: config.mysql.database
});


router.post('/subscription', (req, res) => {
  const user = req.body;
  const q = 'INSERT into Subscription SET ?';
  pool.query(q, user, function(err, connection) {
     if (err)
       return res.json(err);

     return res.json(results);
  });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50801849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档