Mysql 8.0에서 sql_mode 영구 설정하기

네코·2022년 9월 28일
0

오라클 클라우드 인스턴스에 스프링부트 + 리액트 토이프로젝트를 배포하기 위해
mysql을 설치하고 빌드된 jar을 실행시켜 nohup.out에 찍힌 로그를 확인하는 중

mysql의 only full group by 설정으로 sql 에러가 발생하는 것을 확인했다.
해당 오류는 1차적으로 모호한 쿼리로 인해 발생하는 것으로 알려져 있다.

처음 오류를 접했을 때는 개발 시 로컬(윈도우)환경에서는 오류가 없었기 때문에 mysql의 설정의 차이로 발생하지 않았을까라고 생각하여 검색을 통해
글로벌 변수인 sql_mode의 ONLY_FULL_GROUP_BY가 원인인 것을 확인했다.

해당 설정을 변경하는 것은 /etc/my.cnf 혹은 /etc/mysql/my.cnf에서

[mysqld]
sql_mode = (ONLY_FULL_GROUP_BY를 제외한 옵션값들)

추가 후 재시작 하면 된다고 하나 나의 경우 수정한 후 sudo service mysql restart로 재시작하면 mysql server 실행에 실패했다.

해결

ubuntu 22.04 , mysql 8.0.30 기준, /etc/mysql/conf.d/ 에서 sql_mode를 설정 정보를 담을 새 파일을 생성하고

[mysqld]

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

와 같이 작성하고 재시작하니 정상적으로 설정되었다.

0개의 댓글