2014-10-30 2 views
0

이것이 버그인지 또는 무엇인지 알 수 없습니다. 나는 간단한 MYSQL 테이블은 내가 ID 1과 행을 가지고 BIGINT UNSIGNED NOT NULL잘못된 값이 제공된 경우에도 MYSQL 반환 결과

입니다 id라는 열이 table 불렀다 나는이 쿼리를 실행하면

SELECT * FROM table WHERE id = '1dasfrf' 

그리고 놀랍게도 그 결과로 행 ID 1을 반환합니다 열! 유효하지 않은 값이 제공되면 아무 것도 반환하지 않습니다. 해당 테이블의 경우 innoDB

간단히 말해 행 값 뒤에 임의의 숫자가 아닌 값을 입력하면 행이 반환됩니다. 이것은 물론 모든 id 값을 가지고 있지 않습니다. 1

+0

그것은 더 악화 가져옵니다 http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html

당신은 당신이 엄격 모드를 사용할 수있는 자동 형 변환을하지 않으려면); foo 값 ('1x'), ('xy')에 삽입, foo에서 삭제, id; ' –

답변

1

이것은 버그가 아닙니다. 많은 "마법"이 장면 뒤에서 발생합니다.) (20 '테이블 foo는 (아이디 VARCHAR를 만들 :이 경우 , 여기 전환에 대해 읽을 수 있습니다 : http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict

+0

그래서이 문제에 대한 해결책이 있습니까? –

+0

제안 사항을 업데이트했습니다. – msfoster

+0

엄격 모드는 질문의 행동을 변경하지 않습니다. –

관련 문제