nodejs mysql关闭并打开连接

时间:2018-05-20 00:21:29

标签: mysql node.js database connection

我有一个连接到mysql的nodejs应用程序当我保持连接打开服务器关闭它时,当我使用con.destroy或con.end时我无法重新连接到mysql。

我应该做什么,并且最好继续关闭并为每个请求选择新连接,因为知道会有很多。

<input class="test" name="apple"/>
<input class="test" name="orange"/>
<input class="test" name="kiwi"/>
<input class="test" name="banana"/>

4 个答案:

答案 0 :(得分:2)

对于您的问题,您可以访问此文档https://www.npmjs.com/package/mysql#pooling-connections

而不是每次都进行查询而一次又一次地将数据库命中到MYSQL。还需要记住何时关闭连接以及何时打开是一项相当繁琐的任务。您可以使用Sequelize http://docs.sequelizejs.com/(ORM)。这将帮助您摆脱所有这些困难,让您专注于您的业务逻辑,而不是出现技术错误。

HTH谢谢!

答案 1 :(得分:1)

在每个请求上创建和拆除数据库连接都会降低每个请求的响应时间,从而影响整体性能。您应该考虑使用https://www.npmjs.com/package/mysql#pooling-connections中记录的连接池。连接池将使应用程序与诸如服务器因缺少活动而终止空闲连接的方案隔离。

答案 2 :(得分:0)

class Route(var vehicle: Vehicle?, var  jobs: List<Job>?) {
    constructor()
    constructor(vehicle: Vehicle?)

    fun isOverCapacity() : Boolean {
        val vehicleCapacity = vehicle?.capacity
        if (vehicleCapacity != null){
            val totalDemand = jobs?.sumBy { job -> job.demand }
            if (totalDemand != null) {
                return totalDemand > vehicleCapacity
            } 
        }
        return false
    }
}

答案 3 :(得分:0)

你应该使用mysql pooling,不过如果你想为每个请求打开和关闭一个连接,你可以使用async

const async = require('async')
const mysql = require('mysql')

const db = mysql.createConnection(DBInfo)
const query = 'SOME MYSQL QUERY'

async.series([
  function (next) {
    db.connect(function (err) {
      if (err) {
        console.error('error connecting: ' + err.stack)
        next(Error(err))
      } else {
        console.log('Connection successfuly')
        next()
      }
    })
  },
  function (next) {
    db.query(query, function (err, results, fields) {
      if (err) {
        next(Error(err))
      } else {
        console.log(query + ' submitted with success')
        next()
      }
    })
  },
  function (next) {
    db.end(function (err) {
      if (err) {
        next(Error(err))
      } else {
        next()
      }
    })
  }
],
function (err, results) {
  if (err) {
    console.error('There was an error: ', err)
    db2.end()
  }
})