728x90
[공식 문서 정의]
해당 옵션이 활성화되어있을 경우
MySQL은 선택 목록, 조건 또는 목록이 절에 명명되지 않았거나 기능적으로 종속되지 않은 비집계 열을 참조하는 쿼리 를 HAVING거부한다.
즉, mysql이 지정한 group by 표준 규칙에 맞게 쿼리를 수정하라는 뜻이다.
라고 하지만 ON으로 되어있어 테스트서버에서 쓰던 쿼리들이 오류가 났다.
mysql 셋팅에 들어가서 OFF 하는게 좋다.
아래중 방법으로 해결가능
ㄴ1번은 DB를 재시작하면 다시 설정해줘야되서 2번을 추천
1. Mysql sql_mode 설정 변경
1-1. Mysql sql_mode 설정상태 확인
mysql> select @@sql_mode;
[결과]
+-----------------------------------------------------------------------------------+
| @@sql_mode |
+-----------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
1-2. SQL 문으로 수정
첫번째,
SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
두번째,
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
세번째,
SET @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
2 Mysql 설정파일 수정 [추천]
2-1. 해당 서버 내 mysql 설정파일 [ my.cnf ] 수정 및 추가
- my.cnf Path : /etc/my.cnf , /etc/mysql/mysqld.cnf , /etc/mysql/mysql.conf.d/mysqld.conf
- ONLY_FULL_GROUP_BY 설정 제거
[mysqld] 항목 아래 추가 및 수정
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
EX)
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION #이거추가
728x90
'DB' 카테고리의 다른 글
Mysql 외부 접속 권한 설정 (0) | 2025.04.10 |
---|---|
Mysql 백업 (1) | 2024.08.28 |
Mysql Insert (2) | 2024.08.28 |
Mysql UPSERT (0) | 2024.06.18 |