DBMS를 바꿨더니 화면 절반이 죽었다
MySQLMariaDBSQL
01이슈 및 현상
포털의 DBMS를 MariaDB에서 MySQL로 교체하자 Zone 관리·대시보드·고객 계정·단말 사용자 등 여섯 개 넘는 화면이 줄줄이 SQL 오류를 냈습니다.
02원인 파악
MySQL 5.7+는 sql_mode에 ONLY_FULL_GROUP_BY가 기본 활성화되고 SELECT DISTINCT + ORDER BY 검증도 엄격합니다. MariaDB가 관용적으로 통과시켜 온, 원래부터 표준에 어긋나던 쿼리들이 전환과 동시에 일제히 드러난 것이었습니다.
03해결 방안
정렬 컬럼을 SELECT 목록에 추가하거나 GROUP BY에 누락 컬럼을 넣고, 스칼라 서브쿼리의 불필요한 ORDER BY ... LIMIT 1을 제거하는 등 쿼리를 표준에 맞게 정비했습니다. sql_mode에서 옵션을 빼는 우회 대신, 비결정적 정렬 위험을 남기지 않도록 쿼리를 고치는 쪽을 택했습니다.
04결과 및 성과
전환 후 오류 화면을 모두 정상화했고, 대응 과정에서 집계 없는 GROUP BY로 동명 그룹이 목록에서 사라지던 기존 버그까지 함께 발견해 정리했습니다. 호환성 대응이 코드 리뷰 기회가 된 사례였습니다.