반응형
게시판 글 삭제 기능 구현 중 아래와 같은 에러가 발생했다.
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);
});
});
그랬더니 정상적으로 된다.
반응형