java.sql.SQLException: ORA-00001: unique constraint () violated 오류인데요
초월
pre도대체가 뭐가 문제인것인지... 에러가 나네요. 데이터베이스 에러라고 하는데 테이블 만든거에는 별 문제 없어보이는데 말이죠
저번에도 insert할때 중복오류가 계속 나서 기본키를 disable로 했다는..
그랬더니 데이터가 똑같은게 2개가 들어가버리고..
이 문제를 한큐에 해결 할 수 없을까요? 중복되었다고 하는거 같은데.기본키가 중복되있지 않습니다만..
그 전에 인서트시에도 왜 디비에 같은 값이 2개나 들어가는건지도 아직 못풀었고요.
create table re_board (
b_id number(5) primary key,
pwd varchar2(20) not null,
b_name varchar2(20) not null,
b_email varchar2(20) not null,
b_title varchar2(80) not null,
b_content varchar2(2000) not null,
b_date date default sysdate,
b_hit number(5) null,
b_ip varchar2(15) null,
ref number(5) null, step number(5) null, anslevel number(5) null
)
이런식으로 테이블 생성했는데요..
쓰기 게시판이고요string sql = select max(b_id), max(ref) from re_board;로 글번호, 참조번호 구하고
다시 sql = insert into re_board values(?,?,?,?,?,?,sysdate,?,?,?,?,?); 인서트로 업데이트해주는데요.
값넣고 빼기가 왜이리 안되는지 모르겠네요. 저 유니크 오류의 이유를 모르겠습니다. 알려주세요
-
이플
내안의 나님.. 제가 글썼을때는 제가 샘님 아래였는데.. ㅋ 참고로 pstmt.setInt(1, b_id) 이걸 진작에 뺐는데도 안되네요. 제가 궁금한건 왜 마지막 11번째 levels가 안되냐는거에요. 그리고 바로 밑에 업데이트도 안먹고.. 계속 catch로 빠집니다.. 답답하네요..
-
샤인
샘님보다 늦었네; 몇초차이일까? ㅋㅋ
-
움찬
select sql : select max(b_id), max(ref) from re_board
id : 1
ref : 0
ref : 1
sql : insert into re_boardvalues(b_id.NEXTVAL,?,?,?,?,?,sysdate,?,?,?,?,?)
1 : q
2 : q
3 : q
4 : q
5 : q
6 : 0
7 : 0
8 : 127.0.0.1
9 : 1
10 : 0
java.sql.SQLException: 부적합한 열 인덱스
-
길가온
제가 보기엔 pstmt.setInt(1, b_id)이것이 빠져야 한다고 생각합니다. 왜냐하면 오라클에서 b_id의 컬럼에 b_id.NEXTVAL을 통해 자동으로 넣어주기 때문이지요
pstmt.setInt(1, b_id)를 지우시고 그 다음라인의 pstmt.setString(2, pwd)를 pstmt.setString(1, pwd)로 하나씩 줄여 변환시키신 후 executeUpdate해보심이 어떠신지요?
그러시면 아마도 될거 같습니다만.. (안되면 -
good
? 표 갯수는 10개 인데..
왜 prepareStatement 에 set 할때 11, 12 가 나오는거죠?
? 갯수랑랑 일치 해야 되는거 아닌가요? -
달달항사탕
sql = \insert into rep_board values(b_id.nextval,?,?,?,?,?,sysdate,?,?,?,?,?)\;
\t\tpstmt = con.prepareStatement(sql);
pstmt.setInt(1, b_id);
.
.
-
옆집오빠야
음..제 생각에는....
간단하게 해를 들어서 현재 id의 max값이 10 이라고 가정하겠습니다.
1. A Thread max(id)의 값을 가져왔습니다.(값은 10이겠죠 ) id에 +1 을 해서 insert 하려는 시점에..
2. B Thread가 치가 들오옵니다. max(id)의 값을 가져왔습니다.(값은 10이겠죠 )
3. 이제 A Thread가 다시 insert 작업을 진행합니다..(값은 11이겠죠)
4. B Thread도 값을 1증가후 작업을 -
콩알녀
b_id를 sequence로 고치고 insert와 select문을 고쳤는데 셀렉트문이 잘못된건지 (셀렉트는 별다르게 안고침) 열인덱스가 부적합하다고 나옵니다.\t
\tString sql = \select max(b_id), max(ref) from rep_board \;
\tpstmt = con.prepareStatement(sql);
\t\trs = pstmt.executeQuery();
\t\tif(rs.next()){
\t\t\tb_id = rs. -
아잉누님
다시 말씀 드리지만, 세션값으로 넣는건 많이 비추천입니다. 서버에 걸리는 과부하가 매우 크기 때문이죠.
혹시나 해서 sequence 생성하는 것도 같이 알려드립니다.
create sequence b_id increment by 1 start with 1;
sequence를 만드신다면, insert와 select쿼리문도 각각 달라지겠죠
역시 마찬가지로 허접한 팁입니다. 태클 마구마구 환영^^ -
한봄찬
저도 초보인지라 정확히는 알 수 없으나(틀리면.... 부끄부끄;), ORA-00001에러는 기본키(Primary Key)값이 중복되는 경우에 발생하는 에러라고 알고 있습니다. 기본키 값을 number로 설정하셨으니, 해당 키 값을 웹에서 넣어주는 방식이 아닌(웹에서 넣으면 중복되는 값이 들어갈 염려가 있죠), sequence로 처리하는 방법이 어떠신지요?
아니면 해당 jsp페이지에서 세션값이나 hashmap을 사용하여 할당하는 방법도 있습니다만, 그건
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2656873 | 사진 엑박 질문입니다 | 달빛 | 2024-06-01 |
2656847 | 이런-ㅁ-;자바실행 (1) | 파라미 | 2024-06-01 |
2656823 | [질문]인터넷 익스플로어 관련... (3) | 자올 | 2024-06-01 |
2656792 | 다음 로그인소스 (2) | 보미 | 2024-06-01 |
2656736 | 다시한번 질문합니다. | 뽀야 | 2024-05-31 |
2656708 | IETester 도구를 사용해 보고있는데 결과가 다르게 나옵니다. (6) | 앵겨쪼 | 2024-05-31 |
2656653 | 버튼 누르면 이메일로 내용이 전송되게 하는 소스아시나요?ㅠㅠ | 허우룩 | 2024-05-30 |
2656575 | 굵기 하는법 | 빵야 | 2024-05-30 |
2656525 | vb2008에서 6.0으로 변환중에 이런오류가 나네요...왜이런지; (1) | 비사벌 | 2024-05-29 |
2656466 | 맥북의 장점이 무엇인가요? (4) | 티나 | 2024-05-29 |
2656436 | [제작의뢰]간단한 자바 프로그램. (1) | 참이 | 2024-05-28 |
2656408 | 자바 객체 생성에 관한 질문입니다. | 해비치 | 2024-05-28 |
2656382 | 혹시 맥북환경에서 test 하시는분 계신가요? (1) | 달달한캔디 | 2024-05-28 |
2656332 | 도움이 될까해서 글을올립니다(avada 테마관련) (1) | 계획자 | 2024-05-27 |
2656271 | html5에서 div와 section의 용도차이가.. (2) | 한추렴 | 2024-05-27 |
2656239 | 자바에서 stack메모리와 heap메모리란 무엇입니까? (2) | 나봄 | 2024-05-27 |
2656131 | 문자열 출력;; (1) | 서향 | 2024-05-26 |
2656076 | DIV 안에있는 텍스트나 이미지 등을 정렬하는 방법좀... (8) | 유진공주 | 2024-05-25 |
2656051 | 대체 lt 가 무엇인가요??? | 사라 | 2024-05-25 |
2656020 | WinHTTP 사용시 Interop.WinHttp.dll 가 필요없게 하는방법이 있나요 | 나라우람 | 2024-05-25 |