MySQL 자동형변환 금지 옵션이 있나요?

조회수 8925회

안녕하세요 MySQL 쿼리관련하여 문제가 발생하여 질문글을 올립니다..

select ID,membername,SubID from fund_member where SubID='SP107' ;

로 검색했을때 아래와 같은 결과같이 나오게 됩니다.

ID membername SubID
55 멤버 0
1 row in set, 1 warning (0.00 sec)

SubID를 SP107로 검색하였는데 0인결과 같이 나오길래 warning을 확인해보니

Level Code Message
Warning 1292 Truncated incorrect DOUBLE value: 'SP107'

와 같은 경고가 발생했고 테이블 구조를 확인하니 SubID는 문자가 아닌 숫자형

필드였습니다. MySQL에서 자동적으로 형변환을 했기 때문에 이런 문제가

발생한 케이스로 판단 되는데, MySQL에서 자동형변환을 하지 않고 경고가 아닌

에러를 뿌려주도록 할수 있는 옵션이 있나요?

1 답변

  • SQL을 strict mode 설정하면 된다고하네요.

    set @@GLOBAL.sql_mode  = "STRICT_ALL_TABLES";
    set @@SESSION.sql_mode = "STRICT_ALL_TABLES";
    

    또는

    SET sql_mode = '';
    

    로 설정을 바꿔주세요.

    Strict mode에 대한 자세한 설명은 Server SQL Modes - Strict에 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)