2016-08-09 10 views
0

Ich habe eine index.js Routendatei:Node.js Server Timeout nach ~ 30 Sekunden

var express = require('express'); 
    var router = express.Router(); 
    var connection = require('../connection'); 

    /* GET home page. */ 
    router.get('/', function(req, res) { 
     res.render('layout', { title: 'Movieseat' }); 

     connection.connect(); 
     connection.query('SELECT * FROM `users` WHERE `first_name` = "Kees"', function(error, results){ 
      console.log(
     connection.end(); 
    }); 

    module.exports = router; 

Das ist mein connection.js Datei erfordert:

// make a mysql connection to the database 
    var mysql = require('mysql'); 

    var connection = mysql.createConnection({ 
     host  : 'us-cdbr-***-east-04.cleardb.net', 
     user  : 'bfe4****0ede74', 
     password : '674****9', 
     database : 'heroku_****4ee0f0e9102' 
    }); 

    module.exports = connection; 

Wenn ich meine Server starten funktioniert es Gut, aber wenn ich meinen localhost neu lade und die router.get('/', function(req,res) ausführen, gibt es den korrekten Datensatz aus der Datenbank zurück. Aber nach 30 Sekunden stürzt der Server mit dem folgenden Fehler ab:

events.js:

throw er; // Unhandled 'error' event

Error: Quit inactivity timeout

+0

[dieses Thema] (https://github.com/mysqljs/mysql/issues/1223) könnte – kiro112

+0

helfen Es hat ein bisschen helfen. Ich habe am Ende einen MySql-Pool verwendet und es scheint jetzt besser zu funktionieren. http://www.thegeekstuff.com/2014/01/mysql-nodejs-intro/ für die Quelle. –

Antwort

0

Das Problem liegt in Ihrem Code.

var express = require('express'); 
var router = express.Router(); 
var connection = require('../connection'); 

/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('layout', { title: 'Movieseat' }); 

    connection. 
    connection.query('SELECT * FROM `users` WHERE `first_name` = "Kees"', function(error, results){ 
     console.log(
    connection.end(); 
}); 

module.exports = router; 

Sie haben vergessen, die Verbindung zu schließen. Ich hatte das gleiche mit Node-Postgres, und es ist wichtig, die Verbindung jedes Mal nach der Abfrage der Datenbank zu schließen.

Grüße, Rafał

+0

Hey Rafal, ich weiß nicht, warum meine 'connection.connect()' und 'connection.end()' in meiner Frage nicht richtig gefunden wurden (ich habe es jetzt editiert), aber das war nicht das Problem. Ich habe es behoben, indem ich die mysql-Verbindungen gebündelt habe. –

Verwandte Themen