Heroku和NodeJs – MySql连接丢失:服务器closures连接

我有一个非常简单的nodeJS应用程序连接到MySql ClearDB。 第一次运行它没有问题的连接到数据库和执行一个简单的SELECT,但几分钟后,服务器崩溃与数据库失败连接。 任何想法为什么是错的?

错误:连接丢失:服务器closures连接。

这里是我的代码:

web.js

var express = require("express"); var mysql = require('mysql'); var app = express(); app.use(express.logger()); var connection = mysql.createConnection({ host : 'us-cdbr-east-04.cleardb.com', user : 'b6#####', password : 'b3f####', database : 'heroku_1d########5291' }); connection.connect(); app.get('/', function(request, response) { connection.query('SELECT * from t_users', function(err, rows, fields) { if (err) { console.log('error: ', err); throw err; } response.send(['Hello World!!!! HOLA MUNDO!!!!', rows]); }); }); var port = process.env.PORT || 5000; app.listen(port, function() { console.log("Listening on " + port); }); 

Procfile

 web: node web.js 

的package.json

 { "name": "node-example", "version": "0.0.1", "dependencies": { "express": "3.1.x" , "mysql": "" }, "engines": { "node": "0.10.x", "npm": "1.2.x" } } 

LOG

 Aug 25 12:31:30 polar-beach-8042 heroku/slug-compiler: Slug compilation finished Aug 25 12:31:30 polar-beach-8042 heroku/web.1: Stopping all processes with SIGTERM Aug 25 12:31:33 polar-beach-8042 heroku/web.1: Process exited with status 143 Aug 25 12:31:51 polar-beach-8042 app/web.1: - - - [Sun, 25 Aug 2013 19:31:51 GMT] "GET / HTTP/1.1" 200 131 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36" Aug 25 12:31:51 polar-beach-8042 app/web.1: - - - [Sun, 25 Aug 2013 19:31:51 GMT] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36" Aug 25 12:31:51 polar-beach-8042 heroku/router: at=info method=GET path=/favicon.ico host=polar-beach-8042.herokuapp.com fwd="67.86.230.11" dyno=web.1 connect=2ms service=5ms status=404 bytes=34 Aug 25 12:31:52 polar-beach-8042 heroku/router: at=info method=GET path=/ host=polar-beach-8042.herokuapp.com fwd="67.86.230.11" dyno=web.1 connect=2ms service=7ms status=200 bytes=131 Aug 25 12:32:51 polar-beach-8042 app/web.1: Error: Connection lost: The server closed the connection. Aug 25 12:32:51 polar-beach-8042 app/web.1: at Protocol.end (/app/node_modules/mysql/lib/protocol/Protocol.js:73:13) Aug 25 12:32:51 polar-beach-8042 app/web.1: at Socket.onend (stream.js:79:10) Aug 25 12:32:51 polar-beach-8042 app/web.1: at Socket.EventEmitter.emit (events.js:117:20) Aug 25 12:32:51 polar-beach-8042 app/web.1: at _stream_readable.js:910:16 Aug 25 12:32:51 polar-beach-8042 app/web.1: at process._tickCallback (node.js:415:13) Aug 25 12:32:52 polar-beach-8042 heroku/web.1: Process exited with status 8 Aug 25 12:32:52 polar-beach-8042 heroku/web.1: State changed from up to crashed 

谢谢!!!!!!!!

你似乎已经知道发生了什么; MySQL服务器正在closures连接。 许多数据库服务(包括ClearDB)都可以这样做(即closures不活动的连接)。 您将不得不检测断开事件,并重新创build连接。

在node-mysql文档中有这样的说明。