DB/MySQL

[MySQL] SQL_MODE

고해주 2023. 3. 14. 16:00

SQL_MODE

  • MySQL서버의 시스템 변수
  • 각 클라이언트마다 다른 sql 모드를 적용이 가능

 

 

조회 방법

SHOW VARIABLES LIKE 'SQL_MODE';

 

(출력)

 

설정 방법

SET GLOBAL sql_mode = ‘modes’;
SET SESSION sql_mode = ‘modes’;

 

 

 

- ONLY_FULL_GROUP_BY
select 목록, having 조건 또는 order by 목록이 group by 절에 이름이 지정되지 않았거나 GROPU BY column에 primary key나 unique key 처럼 고유하게 존재하여 집계되지 않는 column을 참조하면 쿼리를 거부함

(MySQL 5.7에서부터 기본적으로 활성화 됨)

 


- STRICT_TRANS_TABLES
트랜잭션 스토리지 엔진에 대해 엄격한 SQL 모드를 활성화하고 가능한 경우 비트랜잭션 스토리지 엔진을 활성화

 


- NO_ZERO_DATE
서버가 '0000-00-00' 유효한 날짜로 허용하는지 여부에 영향. 엄격한 SQL 모드가 활성화되었는지 여부에 따라 그 효과도 달라짐 (더이상 사용하지 않음, 향후 MySQL에서 제거될것으로 예상)

 

 

- NO_ZERO_IN_DATE
서버에서 연도부분이 0이 아니지만 월 또는 일 부분이 0인 날짜를 허용하는지 아닌지에 영향(더이상 사용하지 않음, 향후 MySQL에서 제거될것으로 예상)


- ERROR_FOR_DIVISION_BY_ZERO
0으로 나누기를 할 때의 처리에 영향을 줍니다. 데이터 변경(INSERT, UPDATE)의 경우 엄격한 SQL 모드가 활성화 되었는지 여부에 따라 달라짐 (더이상 사용하지 않음, 향후 MySQL에서 제거될것으로 예상)


- NO_ENGINE_SUBSTITUITION
CREATE TABLE 또는 ALTER TABLE과 같은 명령문이 비활성화되거나 컴파일되지 않은 스토리지 엔진을 지정할 때 기본 스토리지 엔진의 자동 대체를 제어합니다.

 

 

 

매뉴얼

https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html

 

MySQL :: MySQL 8.0 Reference Manual :: 5.1.11 Server SQL Modes

The MySQL server can operate in different SQL modes, and can apply these modes differently for different clients, depending on the value of the sql_mode system variable. DBAs can set the global SQL mode to match site server operating requirements, and each

dev.mysql.com

 

'DB > MySQL' 카테고리의 다른 글

[MySQL] Error : Expression #1 of SELECT list is not in GROUP BY...  (1) 2023.03.14