Develope Me!
[Node.js] Mysql 다중 쿼리 사용 중 발생한 에러 해결(ER_PARSE_ERROR) 본문
문제 상황/에러메시지
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() 기능을 사용하여 맵핑해주고 다중 쿼리를 실행해주었더니 원하는 데이터를 출력할 수 있었다.
'JavaScript > Node.js' 카테고리의 다른 글
Comments