[그누보드] 새 글 정리하기

- 01-28
- 4,201 회
- 0 건
문제 상황
DB에서 직접 게시판 테이블을 삭제한 경우, 새 글 테이블($g5['board_new_table']
) 에 기존 게시판 정보가 남아 있어 충돌이 발생합니다.
이 때문에 새 글 보기
에서 오류가 발생하거나 잘못된 데이터가 출력될 수 있습니다.
해결 방법
불필요하게 남아 있는 board_new_table
레코드를 정리해 주어야 합니다.
아래 PHP 스크립트를 생성해 실행하면, 존재하지 않는 게시글 정보를 자동으로 삭제할 수 있습니다.
<?
include 'common.php';
$qry = " select a.*, b.bo_subject, b.bo_mobile_subject
from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c
where a.bo_table = b.bo_table
and b.gr_id = c.gr_id
order by a.bn_id desc ";
$result = sql_query($qry);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$tmp_write_table = $g5['write_prefix'].$row['bo_table'];
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ");
if(!$row2) {
sql_query(" delete from {$g5['board_new_table']} where bn_id = '{$row['bn_id']}' ");
}
}
?>
동작 방식
board_new_table
의 모든 레코드를 불러옴- 각 게시글이 실제
write_xxx
테이블에 존재하는지 확인 - 존재하지 않는 경우
board_new_table
에서 해당 레코드를 삭제
주의 사항
- 스크립트 실행 전 DB 백업 필수
common.php
경로는 실제 설치된 그누보드 환경에 맞게 수정 필요- 스크립트 실행 후에는 삭제된 게시판 관련 새 글 정보가 정상적으로 정리됨
이 스크립트를 통해 board_new_table
과 실제 게시판 테이블을 동기화하면, 게시판 테이블 삭제로 인한 새 글 보기 충돌 문제를 해결할 수 있습니다.
- init.new.php (590byte)
로그인 후 댓글내용을 입력해주세요