From 28a0329114a9fb83a44ff4c67cf76e7105fc4fbd Mon Sep 17 00:00:00 2001 From: infraurp Date: Wed, 26 Aug 2026 15:11:19 +0900 Subject: [PATCH] =?UTF-8?q?MariaDB=20sql=5Fmode=EC=97=90=EC=84=9C=20ONLY?= =?UTF-8?q?=5FFULL=5FGROUP=5FBY=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 원본 MySQL 8과 동작을 맞추려고 이 모드를 켰던 것이 역효과였다. MySQL 8은 GROUP BY 컬럼에 대한 함수 종속성을 판정해 집계에 없는 컬럼도 통과시키지만 MariaDB는 그 판정을 하지 않는다. 같은 sql_mode를 그대로 옮기면 로컬에서 잘 돌던 쿼리가 서버에서만 터진다. 증상: 관리자 2차인증 로그인 직후 /mnt/main.do 가 404. 실제로는 대시보드 쿼리가 'Z.STATUS1' isn't in GROUP BY 로 실패하고 예외 처리가 404로 이어진 것. ONLY_FULL_GROUP_BY 제외는 MariaDB의 기본값이기도 하다. Co-Authored-By: Claude Opus 5 --- deploy/wise/mariadb.cnf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/deploy/wise/mariadb.cnf b/deploy/wise/mariadb.cnf index 9c592bf..326f04c 100644 --- a/deploy/wise/mariadb.cnf +++ b/deploy/wise/mariadb.cnf @@ -21,8 +21,12 @@ table_open_cache = 400 tmp_table_size = 32M max_heap_table_size = 32M -# 원본 MySQL 8은 ONLY_FULL_GROUP_BY가 켜진 상태로 운영된다. 동작을 맞춰 둔다. -sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION +# 원본 MySQL 8 은 ONLY_FULL_GROUP_BY 가 켜진 상태로 운영되지만, 여기서는 빼야 한다. +# MySQL 8 은 GROUP BY 컬럼에 대한 '함수 종속성'을 판정해 집계에 없는 컬럼도 통과시키지만 +# MariaDB 는 그 판정을 하지 않는다. 같은 sql_mode 를 그대로 옮기면 로컬에서 잘 돌던 +# 쿼리가 여기서만 터진다 (2026-08-26 관리자 메인 대시보드: 'Z.STATUS1' isn't in GROUP BY). +# ONLY_FULL_GROUP_BY 제외는 MariaDB 의 기본값이기도 하다. +sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION default_time_zone = '+09:00' slow_query_log = 1