mysql 5.0.x 공백문자인식 정보
MySQL mysql 5.0.x 공백문자인식
본문
서버 셋팅상에서 MYSQL 5.0.X버전에서는 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
이구문이 추가되있어야 공백문자를 인식한다는군요^^
[이 게시물은 관리자님에 의해 2011-10-31 17:27:00 MySQL에서 이동 됨]
추천
1
1
댓글 2개
공백문자 인식이 어디에서 문제가 되나요??? 궁금해서요^^
5.0 이상에서 기본적인 세팅값은 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"인데 여기서 STRICT_TRANS_TABLES 값이 있으면 테이블 필드의 정의에 따라 값이 정확이 입력이 되어야 insert가 됩니다. 예를 들면 no integer default ''이라고 정의했을 때 integer 값은 공백문자를 가질 수 없으므로 정의 자체도 문제거니와 공백문자 값을 insert 하려고 하면 에러가 발생합니다. 그래서 아래 버젼과 호환을 이루기 위해서는 STRICT_TRANS_TABLES 를 sql-mode에서 제거해 주어야 합니다. 관리자님의 설명은 그래서 잘못되었구요. 원래 의미는 트랜잭션 테이블에 값을 입력할 수 없다면 쿼리 구문 수행을 금지한다는 뜻이구요. 대부분의 php보드 생성 및 사용을 보면 위의 예처럼 올바른 정의와 올바른 값을 insert하지 않는 경우가 많기 때문에 만일 앞으로 mysql에서 sql-mode를 기본값으로 정의해서 사용하는 호트팅 서버를 쓰게 될 경우에는 소스를 수정해야할 부분들이 많게 됩니다.
NO_AUTO_CREATE_USER는 자동 사용자 생성 금지로 grant로 생성하던 것을 막겠다는 뜻이구요,
NO_ENGINE_SUBSTITUTION는 엔진 대체 금지로 create 이나 alter 명령시 엔진을 바꾸는 일이 있는데 그것을 막습니다.
참고: http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
NO_AUTO_CREATE_USER는 자동 사용자 생성 금지로 grant로 생성하던 것을 막겠다는 뜻이구요,
NO_ENGINE_SUBSTITUTION는 엔진 대체 금지로 create 이나 alter 명령시 엔진을 바꾸는 일이 있는데 그것을 막습니다.
참고: http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html