본문 바로가기

밥벌이관련/SQL

integer 필드에 ''를 넣어도 에러가 안나게 하는 방법 (centOS기준)

출처URL: http://bizadmin.tistory.com/entry/Mysql-NOT-NULL%EC%97%90-%EA%B0%92%EC%9D%84-%EB%84%A3%EC%A7%80-%EC%95%8A%EC%95%84%EB%8F%84-%EC%97%90%EB%9F%AC%EA%B0%80-%EC%95%88%EB%82%9C%EB%8B%A4





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/

'밥벌이관련 > SQL' 카테고리의 다른 글