본문 바로가기

Database

[MySQL] warning (경고) 메시지를 출력하자

안녕하세요 

마푸입니다. 


MySQL을 관리하다보면 가끔씩 경고 메시지를 출력하는 경우를 볼 수 있습니다. 


MSSQL은 경고 메시지를 출력해도 무슨 이유때문에 경고를 뱉는지 알려주는데...

My는 무슨 이유인지 꽁꽁 숨겨놓습니다. 



사실 이러한 경우는 보통 터미널이나 Putty와 같은 콘솔 연결에서는 모두 출력이 되지만 SQL Browser로 연결해서 쿼리를 실행할 경우 이러한 문제에 당면(?) 할 수 있습니다. 


결론부터 말씀드리면 "연결 설정 때문"인데요


연결 설정을 수정하면 되겠지만 미리 설정하지 않은 상황이라해도 볼 수 있는 명령어는 얼마든지 있습니다. 


아래는 예전에 정리한 내용을 옮겨 적습니다. 


제목 : 경고 메시지 출력


Mysql에서는 경고를 숫자로 카운트하고 보여주지 않습니다. 

하지만 아래의 명령어로 확인이 가능합니다. 

show warnings/G;

명령어 결과


콘솔에서는 에러가 납니다.


but, 특정 Query browser에서는

실행이되면서 경고가 출력됩니다.


message


경고를 출력할 수 있습니다.


결과



but, 잘려진 데이터는 들어가 있지요

이러한 현상은 Query browser는 시작할때 기본적으로 set sql_mode='' 명령을 실행합니다.
비어있다면 아무런 모드를 적용하지 않는다는 뜻입니다.

개발의 편의 등의 사유로 설정하지만 대부분의 응용프로그램 레벨에서는 기본 설정값으로 세팅합니다.

설정보기


* STRICT_TRANS_TABLES : 트랜젝션을 지원하는 테이블에 주어진 값을 추가할 수 없을때 쿼리 실행을 거부합니다. 트랜젝션을 지원하지 않은 테이블에는 데이터를 추가할때 잘못된 값이 단일행 문장이나 다중행 문장의 첫번째 행에 나올때 쿼리 실행을 거부합니다.


* NO_ENGINE_SUBSTITUTION : CREATE TABLE과 같은 명령문이 비활성화 되었거나 또는 컴파일 되지 않은 스토리지 엔진을 지정할때 디폴트 스토리지 엔진으로 자동 대체되는것을 막는다. (MYSQL 5.0.8에서 구현)


테스트



sql_mode 추가옵션정보 

http://www.mysqlkorea.com/sub.html?mcode=develop&scode=01&lang=k&m_no=21330&cat1=5&cat2=120&cat3=138

반응형