2016-08-19 10 views
1

ウェブサービス用にノードjsを使用していますpool.getConnection()を使用した後、pool.getConnection()を使用してください。この接続を閉じるにはconnection.release();を使用していますが、どの接続も使用していません。ない?ノードjsコードにconnection.release()がどれくらい含まれていなければなりませんか?

pool.getConnection(function(err,connection){ 
connection.release(); 
if(!err){ 
    email=req.user.email 
    connection.query('select * from users where email=?',[email], 
    function(err,user_detail){ 
     if(!err) 
     { 
        connection.query('insert into message(??,time,type,user_id) values(?,?,?,?)',[messagecolumns,dbValues,time,type,user_id], 
           function(err,message_inserted){ 
             if(!err) 
             { 
               console.log('Message send',message_inserted.insertId); 
               connection.query('select u.firstname,u.lastname,u.img_path,m.* from users u, message m where u.id=m.user_id and m.id=?',[message_inserted.insertId], 
               function(err,message_detail){ 
                 if(!err) 
                 { 
                  connection.query('select count(id) as message_count from message where appointment_request_id=?',[appointment_request_id], 
                  function(err,total_message){ 
                   if(!err) 
                   { 
                     connection.query('update appointment_request set message_count=? where appointment_request_id=?',[total_message[0].message_count,appointment_request_id], 
                     function(err,update_message_count){ 
                     if(!err) 
                     { 
     } 
    }); 
} 
else { 
    console.log('connection Error',err); 
} 

私はいくつかのウェブサイトから、私はSQLクエリの後、私は接続を閉じなければなりませんが、このコードでは、私はすべての近くに接続し、自分のコードを使用しないことを認識するので、これは、接続のための有効な方法ではありません感じがしばらくしている私に500を与えますサーバーのエラーといくつかの時間が正常に動作するので、私はこのエラーを修正する必要があり、誰かが私にこれを解決するために私を助けてくれれば永久に解決したい。あなたが理解のための任意のconfutationを持っているなら、あなたは私に尋ねるかもしれません。

答えて

1

プールには、限られた接続数(Default is 10)があります。

getConnectionの場合、その接続の1つがでプールから削除され、があなたに渡され、使用できるようになります。の後にconnection.release()に電話をして、接続の作業を終了します。 connection.release()と呼ばれるとすぐに、接続はプールに戻され、コードの他の部分で自由に使用できます。この接続は、コードの他の部分(getConnectionとの接続を要求した部分)によって閉じられたり使用されたりする可能性があるため、この接続を解放した後はこの接続を使用することはできません(ほとんどの場合、予期せず失敗する可能性があります)。

コードでは、コールバックの最初にconnection.release();に電話をかけます。connection以降の使用は、releaseが無効です。

同じ接続でconnection.release()を複数回呼び出すことはできません。

+0

この有効 'pool.getConnection(関数(ERR、接続){ connection.release()である。' – Alex

+0

@Alex iを使用する必要があなたの質問! –

+0

のコードの最初の二行であること ' connection.release(); 'クエリ後?? – Alex

関連する問題