이게 무슨 뜻일까요? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

이게 무슨 뜻일까요? 정보

이게 무슨 뜻일까요?

본문

insert into c4_g4_board_new ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '61', '0', '0', '2009-08-29 16:41:37', 'admin' )

1062 : 중복된 입력 값 '0': key 1

error file : /bbs/write_update.php


이메시지가 나오는데 실력이 없어서 모르겠네요
카페4 업데이트 했다가 고생하고 있습니다

댓글 전체

primary key에 해당하는 field에 "auto_increment"를 지정해주세요.
primary key는 unique(같은 값이 중복되면 안됨) 속성을 가지는데, 첫 데이터에서 primary key가 0으로 들어가고, 두번째 것도 0으로 들어가려니까 에러가 나는 겁니다.
auto_increment를 지정해주면 1, 2, 3 ... 이렇게 순서대로 값이 자동입력됩니다.
그누 보드에서 새글을 입력 하실때 해당 쿼리는
   
sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '$bo_table', '$wr_id', '$wr_id', '$g4[time_ymdhis]', '$member[mb_id]' ) ");

Fneo님의 오류 나는 부분은 $wr_id 가 0으로 들어가는데 0이 기존 DB에 존재 하기 때문에  키값이 중복이 되서 오류가 나네요

write_update.php Line 317번에 보시면 변수 wr_id값을 선언합니다.

$wr_id = mysql_insert_id(); 로 되어 있습니다.

쿼리에서 제일 큰 wr_id 컬럼 값에 추가된 값 (+1) 값을 변수에 대입합니다.

이 부분의 오류로 보입니다.

게시판 테이블 확인해 보시고 wr_id 컬럼에 auto_increment 적용되어 있는지 확인해 보세요 

메뉴얼에는

int mysql_insert_id ( [int link_identifier])

mysql_insert_id()는 link_identifier를 사용하면, INSERT 질의로 행(row)를 추가한 뒤 AUTO_INCREMENT로 생성된 테이블의 컬럼에 추가된 값을 얻을 수 있다. link_identifier를 지정하지 않으면, 마지막에 열려진 link를 사용한다.

mysql_insert_id()는 이전 질의가 AUTO_INCREMENT값으로 생성되지 않으면, 0을 반환한다. 마지막으로 저장된 값이 필요하다면, 질의로 값을 추가한 직후 mysql_insert_id()를 사용하면 된다.

참고: LAST_INSERT_ID()는 AUTO_INCREMENT 값으로 생성된 가장 최근 값이 보관되며, 질의할 동안에는 없어지지 않는다.


주의
mysql_insert_id()는 MySQL C API 내장 함수인 mysql_insert_id()로부터 long 타입으로 변환한다. 만일, AUTO_INCREMENT 열(column)의 타입이 BIGINT라면, mysql_insert_id()은 부정확한 값을 반환할 것이다. 그대신, 내부 MySQL 함수인 LAST_INSERT_ID()를 사용하면 된다.
 
이렇게 나와 있네요 참고 하세요~
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT