혹이 이런 경험을 가지고 계신가요? (visit 문제) 정보
혹이 이런 경험을 가지고 계신가요? (visit 문제)본문
그누보드에 보시면 접속자 현황이라는게 있잖습니까? (참고로 현재 배추빌더를 사용하고 있습니다.)
g4_visit, g4_visit_sum을 이용하여 정보를 보여주는데요
언젠가 부터 작동을 안하는 겁니다.
그래서 원인을 파악하던중 아주 이상한 일이 벌어 져 있더라구요.
/bbs/visit_insert.inc.php 파일을 보시면 아래와 같은 소스가 있는데요....
최고로 큰값을 뽑고, 거기에 1을 더한후 g4_visit에 값을 넣는겁니다.
여기서 아주 이상한 일이 벌어지더라구요.....ㅜ.ㅜ
$tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from $g4[visit_table] ");
$vi_id = $tmp_row[max_vi_id] + 1;
$sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$_SERVER[REMOTE_ADDR]', '$g4[time_ymd]', '$g4[time_his]', '$_SERVER[HTTP_REFERER]', '$_SERVER[HTTP_USER_AGENT]' ) ";
php상에서 최고로 값을 뽑으면 1000이라는 값이 나왔다고 하면....
실제 서버의 디비안에서 쿼리를 해서 결과 값을 보면 1001이 나옵니다.
한마디로 1000이라는 값이 이미 존재를 한다라는 것이죠...
오늘 날짜로 존재하는 것도 아니고, 어제의 날짜로 존재를 하는 것이죠.
이미값이 있으면 g4_visit 에 값을 넣지를 못하는 거죠.
그러므로 오늘 들어온 사람이 몇명이나 되는지 볼려면 방법이 없는 겁니다.
이런일이 몇일전에 있어서...DB를 내렸다 올렸더니 잘 작동을 하는가 싶더니, 몇일 지나니 똑같은 현상이 일어 나네요.
무엇일 문제 일까요......ㅜ.ㅜ
g4_visit, g4_visit_sum을 이용하여 정보를 보여주는데요
언젠가 부터 작동을 안하는 겁니다.
그래서 원인을 파악하던중 아주 이상한 일이 벌어 져 있더라구요.
/bbs/visit_insert.inc.php 파일을 보시면 아래와 같은 소스가 있는데요....
최고로 큰값을 뽑고, 거기에 1을 더한후 g4_visit에 값을 넣는겁니다.
여기서 아주 이상한 일이 벌어지더라구요.....ㅜ.ㅜ
$tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from $g4[visit_table] ");
$vi_id = $tmp_row[max_vi_id] + 1;
$sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$_SERVER[REMOTE_ADDR]', '$g4[time_ymd]', '$g4[time_his]', '$_SERVER[HTTP_REFERER]', '$_SERVER[HTTP_USER_AGENT]' ) ";
php상에서 최고로 값을 뽑으면 1000이라는 값이 나왔다고 하면....
실제 서버의 디비안에서 쿼리를 해서 결과 값을 보면 1001이 나옵니다.
한마디로 1000이라는 값이 이미 존재를 한다라는 것이죠...
오늘 날짜로 존재하는 것도 아니고, 어제의 날짜로 존재를 하는 것이죠.
이미값이 있으면 g4_visit 에 값을 넣지를 못하는 거죠.
그러므로 오늘 들어온 사람이 몇명이나 되는지 볼려면 방법이 없는 겁니다.
이런일이 몇일전에 있어서...DB를 내렸다 올렸더니 잘 작동을 하는가 싶더니, 몇일 지나니 똑같은 현상이 일어 나네요.
무엇일 문제 일까요......ㅜ.ㅜ
댓글 전체
저도 이때문에 무지 고생했는데 찾았습니다. 방금 전에...
visit table의 index가 문제입니다.
visit table index가 두 개 있는데 두 번째 꺼는 키값이 date입니다.
이것 때문에 중복키 오류로 테이블에 오류가 발생합니다.
max값이 개판되고....
암튼 vi_id 를 auto_increment로 만들어 놓고 해도 마찬가지라서...
그 두번째 인덱스를
vi_date, vi_ip, vi_id 이렇게 합쳐 놓았더니 해결났습니다.
게시글로도 남겨 놓겠습니다.
visit table의 index가 문제입니다.
visit table index가 두 개 있는데 두 번째 꺼는 키값이 date입니다.
이것 때문에 중복키 오류로 테이블에 오류가 발생합니다.
max값이 개판되고....
암튼 vi_id 를 auto_increment로 만들어 놓고 해도 마찬가지라서...
그 두번째 인덱스를
vi_date, vi_ip, vi_id 이렇게 합쳐 놓았더니 해결났습니다.
게시글로도 남겨 놓겠습니다.