node-mysql连接mysql的坑

由于工作需要,整合旧有的两个平台的数据,将它们从php + mysql迁移到node.js + mongodb中。需要对重复数据进行关联映射,直接在新平台写了个ajax请求直接去获取旧有的数据。用了node-mysql去连接。代码写好后本地测试没有错误,然后上线。结果下午运行了一会,就导致线上数据库挂掉了.原因是mysql显示有数百个连接一直占用。导致超过数据库连接限制,其他程序无法连接。

细看代码才发现,连接完成后没有去关闭,可能用PHP多了,自然而然认为连接都会自动去关闭。谁知node.js自动关闭默认需要等8小时无活动才会自动关闭。

var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;

console.log('The solution is: ', rows[0].solution);
});

connection.end(); // this is more important!!!

优化策略就是查询后立即关闭,对于ajax增加逻辑判断,如果正在查询过程中时则保持等待,每次查询返回结果后才能进行下一次查询。当然也仅是临时处理,对于项目是node.js+mysql的可能要重置超时时间,并且去用连接池了。 node-mysql 文档地址:https://github.com/felixge/node-mysql

4 thoughts on “node-mysql连接mysql的坑”

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>