본문 바로가기

MySQL

Mysql strict mode와 데이타 타입이 틀려도 에러가 안나게 설정하는 방법

Mysql NOT NULL에 값을 넣지 않아도 에러가 안난다


내가 많이 써 본 MSSQL 같은 경우 컬럼에 대해 NOT NULL 로 설정 하면

반드시 값을 넣어 줘야 에러가 나지 않는다.


그런데 가만 보니 어떤 Mysql 에서는 NOT NULL 컬럼에 값을 넣지 않아도 문제가 안되고

있어서 자세히 살펴보니 sql-mode 라는 것이 있었다.

 

이름하여 strict mode 라고 합니다.

 

-- 현재 설정 된 sql_mode 를 확인 해 봅니다.

SELECT @@global.sql_mode;

 

-- 아래와 같은 결과가 나왔다면 NOT NULL 로 설정하면 에러가 나고 멈춰 버립니다.

STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

아마도 Mysql 5.x 이전 부터는 STRICT 가 아니어서 NOT NULL 에 값을 넣지 않으면 공백으로 입력이 된듯 하다.

 

그럼 어떻게 해야 될까 ?

 

윈도우의 경우 my.ini 파일을 찾아 주석 처리해 주면 된다.

 

리눅스의 경우 my.cnf 파일을 찾아 주석 처리해 주면 된다.

 

# sql_mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

 

( ※ my.ini 파일은 윈도우에서는 숨김 파일이므로 검색할 때 숨김 파일 포함으로 찾아 보면 된다. )

 


이제 다시 mysql 을 다시 시작하고 해보면 된다.

 

참고 : http://dev.mysql.com/doc/refman/4.1/en/server-sql-mode.html

http://nickbartlett.com/wordpress/how-to-turn-off-mysql-strict-mode/

https://lael.be/152

http://digitalmemo.neobie.net/2009/03/04/mysql-default-sql-mode/