반응형

게시판 글 삭제 기능 구현 중 아래와 같은 에러가 발생했다.

 

Error: ER_TRUNCATED_WRONG_VALUE: Truncated incorrect DOUBLE value

 

나의 node express 소스코드는 단순했다.

 

app.post("/delete", (req, res) => {
  const id = req.body.boardIdList; // '6','5'

  const sqlQuery = "DELETE FROM BOARD WHERE BOARD_ID IN (?)";
  db.query(sqlQuery, [id], (err, result) => {
    console.log(err);
    res.send(result);
  });
});

 

나의 경우에는 파라미터의 타입이 맞지 않아서 발생한 오류였다.

BOARD_ID를 INT형으로 선언했으나, 실제 파라미터에는 ('6', '5')로 들어가서 쿼리가 정상적으로 실행되지 않은 것이다.

 

그래서 클라이언트에서 파라미터를 넘겨줄 때 '6', '5'가 아닌 6,5로 수정하였다.

그런데도 동일한 오류가 발생하였다.

 

node express에서 쿼리를 실행할 때, 파라미터의 양 끝에 ''를 넣어주는 것 같다.

실제로 실행된 쿼리를 보면 아래와 같다.

 

DELETE FROM BOARD WHERE BOARD_ID IN ('8,10')

 

그래서 id값을 쿼리 실행 api의 파라미터로 던지지 않고, 쿼리 string에 바로 대입하였다.

 

// 기존
app.post("/delete", (req, res) => {
  const id = req.body.boardIdList; // 6,5

  const sqlQuery = "DELETE FROM BOARD WHERE BOARD_ID IN (?)";
  db.query(sqlQuery, [id], (err, result) => {
    console.log(err);
    res.send(result);
  });
});

// 변경
app.post("/delete", (req, res) => {
  const id = req.body.boardIdList; // 6,5

  const sqlQuery = `DELETE FROM BOARD WHERE BOARD_ID IN (${id})`;
  db.query(sqlQuery, (err, result) => {
    res.send(result);
  });
});

 

그랬더니 정상적으로 된다.

반응형