Develope Me!

[Node.js] Mysql 다중 쿼리 사용 중 발생한 에러 해결(ER_PARSE_ERROR) 본문

JavaScript/Node.js

[Node.js] Mysql 다중 쿼리 사용 중 발생한 에러 해결(ER_PARSE_ERROR)

코잘알지망생 2024. 4. 1. 14:22

 

문제 상황/에러메시지

 

Node.js 환경에서 다중 쿼리를 실행하고 나서 발생한 오류다.

쿼리를 한 문장으로 실행되지 않게 하기 위해서 두 개의 쿼리를 세미콜론으로 구분해줬는데도 왜 이런 에러가 발생한 걸까?

 

문제 해결

 

const mysql = require("mysql");

const db = mysql.createConnection({
  host: "호스트",
  port: "포트번호",
  user: "유저",
  password: "패스워드",
  database: "db",
  multipleStatements: true,
});

db.connect();

module.exports = db;

 

다중 쿼리를 실행하기 전에 db 옵션에서  multipleStatments : true (다중 쿼리 사용)를 추가해준다.

 

const sql1 =
      "SELECT SUM(A.ACCOUNT_MOUNT) AS ACCOUNT_MOUNT FROM ....  WHERE A.USER_CD = ? AND DATE_FORMAT(A.account_date,'%Y-%m') = DATE_FORMAT(CURRENT_DATE(),'%Y-%m') GROUP BY C.category_type ORDER BY  C.category_type;";
    const sql1s = db.format(sql1, req.session.user_cd);
    const sql2 =
      "SELECT CATEGORY_CD, CASE WHEN CATEGORY_TYPE = 'OUT' THEN CONCAT('[지출] ',CATEGORY_NM) ELSE CONCAT('[수입] ',CATEGORY_NM) END AS CATEGORY_NM  FROM GAZI.CATEGORY ORDER BY CATEGORY_CD;";
    db.query(sql1s + sql2, function (err, results) {
      if (err) console.log(err);
      res.send(results);
    });

 

파라미터가 있는 쿼리는 format() 기능을 사용하여 맵핑해주고 다중 쿼리를 실행해주었더니 원하는 데이터를 출력할 수 있었다.

Comments