2013-08-25 5 views
1

У меня очень простое подключение узла nodeJS к MySql ClearDB. При первом запуске он не имеет проблем с подключением к БД и выполнением простого SELECT, но через несколько минут сервер разбивает его на соединение с отказом DB. Любая идея, почему это неправильно?Heroku и NodeJs - MySql Соединение потеряно: сервер закрыл соединение

ОШИБКА: Соединение потеряно: сервер закрыл соединение.

вот мой код:

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 

СПАСИБО !!!!!!!!

ответ

2

Вы уже знаете, что происходит; сервер MySQL закрывает соединение. Многие службы базы данных, включая ClearDB, делают это (т. Е. Закрывают неактивные подключения). Вам нужно будет обнаружить событие разъединения и воссоздать соединение.

В документации node-mysql есть instructions.

Смежные вопросы