* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window7 32bit, Linux 64bit 등 |
|
[cubrid_rel] 수행 결과 |
|
[도움말]-[버전정보] 확인 |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
테이블의 pk값이 auto_increment(1,1)로 잡혀져 있는데 batch 작업 돌면서 insert 하려고 하면 에러가 나면서 insert가 되지 않습니다. 1건을 넣어도 되지 않네요
어떻게 처리해야 되나요?
pk값에 값을 999999999를 보내서 넣어도 insert가 되지 않습니다.
"insert하려고 하면 에러" -> 어떠한 에러가 발생하는지 $CUBRID/log 또는 $CUBRID/broker/sql_log/브로커번호.log등을 찾아 에러내용이 정확히 무엇인지 파악이 필요합니다.
의심하시는 부분이 PK값으로 auto_increment인데 중복에러가 발생하는 것 같다로 이해됩니다.
이러한 경우
1. select * from db_serial로 해당 테이블의 serial명을 확인
2. 현재의 serial값을 확인으로 확인해보세요
예제)
csql> ;sc t //스키마 정보 확인
<Class Name>
dba.t
<Attributes>
i INTEGER AUTO_INCREMENT
csql> select * from db_serial; //auto_increment의 unique_name확인
=== <Result of SELECT Command in Line 1> ===
unique_name name owner current_val
increment_val max_val min_val cyclic s
tarted class_name att_name cached_num comment
==============================================================================================================================================================================
=====================================================================================
'dba.t_ai_i' 't_ai_i' db_user 5 1 2147483647 5 0
0 't' 'i' 0 NULL
csql> select dba.t_ai_i.current_value; //현재값 확인
=== <Result of SELECT Command in Line 1> ===
serial_current_value(t_ai_i)
======================
5
감사합니다.