프로그램사전세팅

SQL 모드 설정 변경(GROUP BY부분)

regnator 2024. 7. 24. 00:48
728x90
반응형

SQL 모드 설정 변경

ONLY_FULL_GROUP_BY 모드를 제거하면 GROUP BY 절의 사용이 더 유연해진다.

-- SQL 명령어를 사용하여 동적으로 변경
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

이 명령어는 일시적인 변경으로, MySQL 서버를 재시작하면 원래 설정으로 복원된다.

 

MySQL 설정 파일 my.ini에서 SQL 모드를 변경하여 특정 SQL 규칙을 완화하거나 강화할 수 있다.

1) (MySQL설치폴더) C:\ProgramData\MySQL\MySQL Server 8.0\my.ini-> 속성

사용자에서 everyone을 추가하고 수정권한을 추가해준다

 

2) 메모장으로 my.ini 열기

메모장 내용중

sql-
mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

부분을

sql-
mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

으로 변경(ONLY_FULL_GROUP_BY부분 삭제)

 

혹시 변경후 바로 저장이 안되고 다른이름으로 저장이 뜨면 권한부여가 제대로 안된것이다.(바로위 사진 참조)

 

3) MySQL재시작

윈도우 검색창에서 service검색

설치된 MySQL(MySQL80)을 찾아서 다시시작을 해주자

위 작업의 의미

my.ini 파일은 MySQL 서버의 설정 파일로, MySQL 서버가 어떻게 동작할지를 정의하는 다양한 설정들이 포함되어 있다. 이 파일을 수정함으로써 MySQL 서버의 동작 방식을 변경할 수 있다.

sql-mode는 MySQL 서버가 SQL 문을 처리하는 방식을 제어하는 설정이다. 이 설정은 여러 개의 SQL 모드를 콤마(,)로 구분하여 지정할 수 있다. 각 모드는 특정한 SQL 동작을 제어하거나 제한한다.

 

결론

  • ONLY_FULL_GROUP_BY 모드를 제거함으로써, GROUP BY 절을 사용할 때 더 느슨한 제약 조건이 적용된다. 즉, GROUP BY 절에 명시되지 않은 컬럼을 쿼리에서 사용할 수 있게 되어, 기존에 이 모드 때문에 오류가 발생하던 쿼리들이 이제는 정상적으로 실행될 수 있다.

이 변경 작업은 주로 쿼리 작성의 유연성을 증가시키기 위해 이루어진다. 그러나, 이는 데이터 무결성에 영향을 미칠 수 있으므로 주의해서 사용해야 한다.

728x90
반응형