본문 바로가기
MySql

MySQL Node.js 및 mysql 콜백 : 쿼리 콜백의 쿼리

by 베이스 공부 2021. 1. 3.
반응형

내가 원하는 것은 데이터베이스에 데이터가없는 경우 일부 데이터를 삽입하는 것이므로 Insert SQL을 Select SQL의 콜백 함수에 넣었지만 다음과 같은 오류가 발생했습니다.

{[오류 : 종료를 호출 한 후 쿼리를 대기열에 넣을 수 없습니다.] 코드 : 'PROTOCOL_ENQUEUE_AFTER_QUIT', 치명적 : false}

내 코드 스 니펫은 다음과 같습니다.

db.query('SELECT count(*) as Resultcount FROM tablename WHERE email = ? and password = ?', [post.email, post.password], function(error, result){
    if (result[0].Resultcount == 0){
        var query2 = db.query('INSERT INTO tablename SET ?', [post], function(err, result) {
            if(err){
              console.log(err);
           }
             console.log(result);
          });
    }
    else{
        console.log('have data already');
    }
});

누군가 나에게 조언을 해줄 수 있습니까? 감사

----최신 정보----

실제로 select SQL의 콜백 함수는 익명 함수가 아니며 db.end ()에 대한 코드 조각은 다음과 같습니다.

var QueryResults = new queryResultFuntion(Back_results);

    db.query('SELECT count(*) as Resultcount FROM tablename WHERE email = ? and password = ?', [post.email, post.password], QueryResults.queryResult );


    db.end();

 

해결 방법

 

db.end () 호출은 SELECT 가 완료되면 연결이 닫히도록 대기열에 추가되므로 내부 INSERT 쿼리를 수행하려고 할 때 , 데이터베이스 연결이 닫히므로 연결이 닫힌 후 새 명령을 큐에 넣으려고 할 때 PROTOCOL_ENQUEUE_AFTER_QUIT 오류가 발생합니다.

연결을 만드는 방법에 따라 db.end () 호출을 콜백 내부로 이동하거나 db.end () 호출이 전혀 없어야합니다. 프로그램 시작시 연결이 열린 경우.

 

참조 페이지 https://stackoverflow.com/questions/16134378

 

 

반응형

댓글