QueryFailedError
docker image로 mysql 5.7을 사용하다 최신버전으로 업데이트 한 뒤 생긴 이슈들을 기록해본다.
TypeORM의 querybuilder를 사용해서 db에서 데이터를 가져와 사용하고 있었는데
버전업을 한 뒤에 QueryFailedError가 발생했다.
MySQL의 예약어를 db나 테이블에 사용한것이 문제를 일으킬 수 있다고 하여 살펴봤지만 마땅히 문제가 될만한 부분을 찾을 수 없었다.
IN절을 사용한 부분이 문제였는데 데이터베이스나 테이블명이 아닌 operator로써 사용하였는데 문제가 발생해서 정확한 원인 파악은 어려웠다.
IN -> where, orWhere 을 사용해서 처리했다. 단 query 성능이 저하될 수 있으므로 주의해야 한다.
프론트에서 POST요청 시 DateTime속성이 있는 body를 보냈을때 에러발생
db에서 timestamp 속성을 사용하고 있었는데
MySQL 8.4 버전에서는 database 속성에 대해서 더 엄격한 검사를 하기때문에 기존에 datatime 형식으로 데이터를 보냈을때 에러가 발생하는 것이였다.
해당 프로젝트는 Global을 고려하지 않은 간단한 서비스여서 db entity의 timestamp -> datatime로 수정하여 해결했다.