* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, | |
8.4.3.4002(linux) | |
CUBRIDQuery-2013-build-0236-windows-i386.zip 파일설치 후, 버전확인 CUBRID Query Browser 2014.01 빌드 0377 (접속 JDBC버전: 8.4.3.1005) |
|
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
[ 에러내용 및 재현 방법 ]
Query Broswer쪽 문제입니다.
아래의 [재현가능한 SQL 문]으로 테이블생성 직후에는 "Query Broswer"를 통해, 아래의 sql문이 실행이되나,
하나의 레코드를 삽입한 이후( [재현가능한 SQL문]에 insert문 있음 )에는 아래의 sql문 실행시 에러가 발생함.
- 다른 형태의 테이블은 조회가 되는 테이블도 있음.
- linux에 접속에서 csql문으로 select문 실행시 정상 실행됨.
- 이유가 CUBRID버전(8.4.3.4002) 와 쿼리브라우저접속버전(8.4.3.1005) 차이 때문인지 알수 없음. 그렇다고 8.4.3.4002버전용 접속JDBC제공되어 있지 않음.
SQL문:
SELECT * FROM tbl_url_log;
에러내용: 아래와 같음.
실행 오류 : -2016
The argument is invalid
[재현가능한 SQL문]
테이블생성문:
CREATE TABLE tbl_url_log(
scan_no bigint DEFAULT 0 NOT NULL,
sub_scan_no bigint DEFAULT 0 NOT NULL,
"no" BIGINT DEFAULT NULL,
p_no bigint DEFAULT NULL,
search_site varchar(2048) DEFAULT '' NOT NULL,
search_date datetime DEFAULT DATETIME'0000-00-00 00:00:00.000' NOT NULL,
rep_cnt bigint DEFAULT 0,
"depth" integer DEFAULT 0 NOT NULL,
sch_file_type varchar(4) DEFAULT '' NOT NULL,
visit smallint DEFAULT 0 NOT NULL,
content_time datetime DEFAULT DATETIME'0000-00-00 00:00:00.000' NOT NULL,
dwn_fail_reason varchar(255) DEFAULT '' NOT NULL,
c_length integer DEFAULT NULL,
dwn_elapsed_con integer DEFAULT NULL,
dwn_elapsed_req integer DEFAULT NULL,
dwn_elapsed_resp integer DEFAULT NULL,
UNIQUE INDEX index_no (scan_no,sub_scan_no,"no"),
UNIQUE INDEX unique_index (scan_no,search_site),
INDEX url_log_file_type_index (sch_file_type)
) ;
테이블레코드삽입문
INSERT INTO tbl_url_log (scan_no, sub_scan_no, "no", p_no, search_site, search_date, "depth", sch_file_type, visit, content_time, dwn_fail_reason, c_length, dwn_elapsed_con, dwn_elapsed_req, dwn_elapsed_resp )
VALUES (1, 1, 1, 1, 'http//www.abc.com', now(), 100, 'htm', 0, '0000-00-00 00:00:00', '', 0, 0, 0, 0);
안녕하세요.
사내에서 확인한 결과, 말씀하신 오류를 확인하였으며, 아래와 같은 방법으로 해결하였습니다.
1. 좌측 네비게이션에서 [연결 이름] 우클릭 - [데이터베이스 로그아웃] 클릭
2. 좌측 네비게이션에서 [연결 이름] 우클릭 - [연결 정보 편집] 선택
3. [JDBC 옵션]의 [옵션설정] 선택
4. [기본 설정]의 [날짜/시간 0값 처리(zeroDateTimeBehavior)] 값을 [반환할 타입의 최소값으로 변환] 선택 후 [확인]
5. 위에서 설정한 연결정보를 저장 후 연결
6. 위 내용으로 확인
해당 이슈는 CUBRID2008 R4.3 버전에서 DATETIME 이라는 타입의 최소값이 GMT로 0001-01-01 00:00:00.000으로 설정되어 있고, 이 미만의 값이 들어오는 경우, SQLException을 출력되도록 Default로 설정되어 있기 때문에 발생하는 것입니다.
이를 해결하기 위해서는 위에 설명드린 것과 같이 기본 동작인 SQLException 출력에서 최소값으로 변환하여 주는 옵션을 추가해주시면 됩니다.
감사합니다.