2016-09-23 3 views
0

이것은 정말로 짜증나. 나는 단지 나의 mysql 연결을 닫을 수 없다. 여기 내 코드입니다 : 그래서NodeJS와의 MySQL 연결을 닫을 수 없다

var mysql = require('mysql'); 

function getConnection(){ 
    return mysql.createConnection({ 
     host  : credentials.db.host, //'eu-cdbr-azure-north-e.cloudapp.net', 
     user  : credentials.db.user,  //'b1a8cac71bbac61', 
     password : credentials.db.password,  //'be2de8334', 
     database : credentials.db.database  //'bcd290081' 
    }); 
} 

function runMySQLQuery(qry, callback){ 
    var conn = getConnection(); 
    conn.connect(); 
    conn.query(qry, function(err, rows, fields) { 
     if (err){ 
      // db err 
      callback(Error.sql_query, null); 
     } else{ 
      // check result 
      if(typeof rows == 'object'){ 
       callback(Error.no_errors, rows); 
      }else{ 
       // wrong return from db 
       callback(Error.sql_query, null); 
      } 
     } 

    }); 
    //conn.destroy(); 
    conn.end(function(err) { 
     // The connection is terminated now 
     console.log('connection ended'); 
    }); 
} 

var qry = "SELECT id, hash, last_login FROM acsm_b962fe317b5d30e.orium_chatbot_customers " + 
      "WHERE username = '" + username + "' AND password = '" + password + "';" 
//console.log('qry', qry); 
runMySQLQuery(qry, callback); 

, 내가 원하는 데이터를 수신하고 있습니다 만, 연결이 열려있는 유지 나는 파괴 및 최종 (콜백 기능 및없이) 방법과 내 프로그램은 단지 모두를 수행 시도 끝나지 마라. 마지막으로 종료 될 때까지 약 1 분이 소요되며 마지막 콜백 함수가 호출됩니다.

정말 성가신, 나는 또한 이것에 대해 또 다른 stackoverflow doubt을 많이 보지 못했다.

필자는 AWS Lambda에 코드를 배포하고자하므로 연결을 닫는 것이 매우 중요합니다. 너무 오래 걸릴 여유가 없습니다.

+0

언제 닫으시겠습니까? – Beginner

+0

내 쿼리가 실행 된 후 콜백을 호출 한 다음 conn.end – Ernanirst

+0

시도하십시오 connection.on ('오류', 함수 (오류) {console.log (오류);}); – Beginner

답변

1

사용 MySQL의 연결이 코드는 내가 내 자신에 대한 해결책을 찾는 결국

1) conn.release(); 

2) conn.destroy(); 
+0

이봐 요, unfortunatelly이 작동하지 않았다 realease 그것은 수영장이 아니기 때문에 사용할 수있는 방법 아니에요, 그리고 전에 파괴하려고했는데, 여전히 연결을 닫지 않습니다 : ( – Ernanirst

0

놓습니다. 정말 나쁜 추측 이었지만 효과가있었습니다. 노드 MySQL은이처럼 작동하도록되어 있는지 확실하지 않습니다,하지만 난 단지 함수 runMySQLQuery에 일부 코드를 추가했다 :

function runMySQLQuery(qry, callback){ 
    var conn = getConnection(); 
    conn.connect(); 
    conn.query(qry, function(err, rows, fields) { 
     if (err) { 
      return conn.rollback(function() { 
       console.log(JSON.stringify(err)); 
       throw Error.sql_query; 
      }); 
     } 
     conn.commit(function(err) { 
      if (err) { 
       return conn.rollback(function() { 
        throw Error.sql_commit; 
       }); 
      } 
      conn.destroy(); 
      callback(Error.no_errors, rows); 
     }); 
    }); 
} 

실제로 커밋 연결을 종료 호출 한 후 파괴 부르심 것으로 밝혀졌습니다. 다시 한번 말하지만 파괴 나 끝내기 만하면 저를 괴롭히지 않았습니다.

관련 문제