2013-06-04 4 views
1

예외 처리를 테스트하기 위해이 쿼리가 필요하므로 쿼리가 스키마에 종속되지 않는 것이 좋습니다. SELECT 1;과 같은 것을 찾고 있는데 물론 실패하지는 않습니다.실패한 SQL 쿼리는 어떻게 작성합니까?

Java와 MySQL을 사용하고 있지만 프로그래밍 언어 및/또는 RDBMS에 의존하지 않는 답변을 찾고 싶습니다.

+0

왜 당신은이 질문에 뭐가 잘못 됐는지 지적 잠시 시간을내어하지? – muhuk

답변

2

종결되지 않은 문자열처럼 ... 할 것입니다. 예를 들면 :

SELECT some_fake_field FROM table_that_doesnt_exists 
5

무엇 우선 "1/0 선택"에 대한 : 또 다른 유사한 아이디어는 ... 인수의 잘못된 번호로 갱신/삽입 명령문을 작성 여기

더 생각하는 것입니다?

+0

MySQL에서 작동하지 않는 것 같습니다 : NULL을 반환합니다. – muhuk

+0

글쎄, 그 성가신 및 IMHO 기본 동작으로 올바른 것이라고 생각하지 않습니다 있지만 MySQL 남자가 아니에요 :) sql_mode 설정에 대한 아래 @HeadofCatering 주석을 참조하십시오 (물론 RDBMS 독립이 답변을 disqualifies.) 거기 예를 들어 문법 오류와 엔진 오류가 서로 다른 유형의 예외이기도합니다. 예를 들어 어떻게/무엇을 테스트하고 있는지 알지 못하는 경우 해당 예외가 앱을 통해 다른 경로를 사용할 수 있습니까? –

4

당신은 쿼리

select doesnotexist.* from something_else 

또는 과정에 유효하지 않은 토큰을 넣을 수 있습니다, 당신이해야하는 방법 밖에 모의이며 테스트하는 동안 예외가 발생했습니다.

0

오래된 구문 오류가 필드를 오타, 또는 비 기존 테이블에서 선택과 같은 실패 쿼리를 만들 수있는 방법의 톤이있다

select 'bob 
0

MySQL의 오류를 높이기 위해 1/0를 얻으려면, 당신은 ERROR_FOR_DIVISION_BY_ZERO에 sql_mode을 설정해야합니다. 이 sql_mode가 설정되지 않은

SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO'; 
SELECT 1/0; 

하면, MySQL 대신 오류의 NULL을 반환합니다

이보십시오. 다음으로

확인할 수있는 현재 설정은 다음과 같습니다 당신이 그것을 downvote하기 전에

SELECT @@GLOBAL.sql_mode; 
SELECT @@SESSION.sql_mode; 
관련 문제