노드js mysql 연결 유지에 대해서 또는 다시 연결에 대해서

노드js 와 mysql 을 연동하여 프로그램을 짜고 있는데요.

mysql에 원격지 서버다보니 잘 끊어지네요.

그래서... 접속해서 쿼리를 처리하고.. 끊고 필요할때 다시 접속연결해서 쿼리를 처리하고 끊고 하게 해봤는데

처음엔 되는데 두번째 연결에서는 에러를 발생시킵니다.

conn.connect() conn.query() conn.end()

이런 순으로 진행하면 연결하고 쿼리 던지고... 종료하고 그러지 않나요? 물론 비동기 방식이라서 callback 함수를 통해서.. 처리했는데도

두번째 연결 붙을때는 문제가 발생합니다. 이런 경우는 어떻게 처리하면 될까요?

======= 제가 짠 소스 입니다 =============================

var mysql = require('mysql');
var dbconfig = require('../js/database.js');
var connection = mysql.createConnection(dbconfig); //< DB Connection~!!
var sleep = require('system-sleep');


connection.connect(function(err){
    if(!err) {
        console.log("Database is connected ... nn");  
    } else {
        console.log("Error connecting database ... nn:" + err);    
    }


    var sql = "SELECT day_reset_time, night_reset_time FROM reset_table WHERE week_day='목요일'";

    connection.query(sql, function(err, rows){

        if(err) throw err;
        day_reset_time   = rows[0].day_reset_time;
        night_reset_time = rows[0].night_reset_time;  
        console.log('day_reset_time:' + day_reset_time + ', night_reset_time:' + night_reset_time);
        connection.end();     

    });    

});

 sleep(10000); //< 이 곳에서 10초 멈추고~!!

connection.connect(function(err){ 
    if(!err) {
        console.log("Database is connected ... nn");  
    } else {
        console.log("Error connecting database ... nn:" + err);    
    }

    var sql = "SELECT day_reset_time, night_reset_time FROM reset_table WHERE week_day='목요일'";

    connection.query(sql, function(err, rows){

        if(err) throw err;   //< Cannot enqueue Query after invoking quit.
        day_reset_time   = rows[0].day_reset_time;
        night_reset_time = rows[0].night_reset_time;  
        console.log('day_reset_time:' + day_reset_time + ', night_reset_time:' + night_reset_time);
        connection.end();     

    });    

});

처리 결과

C:\nodeProj\voo\js>node test.js
Database is connected ... nn
day_reset_time:06:55, night_reset_time:16:05
Error connecting database ... nn:Error: Cannot enqueue Handshake after invoking quit.
C:\nodeProj\valeo\js\test.js:43
        if(err) throw err;
                ^

Error: Cannot enqueue Query after invoking quit.
    at Protocol._validateEnqueue (C:\nodeProj\valeo\node_modules\mysql\lib\protocol\Protocol.js:204:16)
    at Protocol._enqueue (C:\nodeProj\valeo\node_modules\mysql\lib\protocol\Protocol.js:139:13)
    at Connection.query (C:\nodeProj\valeo\node_modules\mysql\lib\Connection.js:208:25)
    at Handshake._callback (C:\nodeProj\valeo\js\test.js:41:16)
    at Handshake.Sequence.end (C:\nodeProj\valeo\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24)
    at C:\nodeProj\valeo\node_modules\mysql\lib\protocol\Protocol.js:225:14
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Function.Module.runMain (module.js:667:11)
    at startup (bootstrap_node.js:187:16)

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.