그누보드4에서 그누보드5로 DB이전 오류
본문
이곳에서 많은 도움을 받고 있는 눈팅회원입니다.
아무것도 모르지만 많은 지식을 주시는 분들께감사드리며
아무리해도 안되다보니 이렇게 문의글 남겨드립니다.;
기존 카페24에 있던 그누보드4DB와 데이터를 신규 서버로 이전하려고 합니다.
신규 서버환경은 윈도우서버와 mysql, php등을 설치해서 기존에 다른
그누보드 사이트는 정상 동작하고 있는 상태입니다.
그리고 "phpMyAdmin"은 설치가 안되어져 있는상태입니다.
기존 카페24에 있던 DB는 mysqldump를 이용해서 백업 받고
"mysqldump -u 사용자id -p db명 > 백업파일명"
해당sql파일을 서버 업로드한뒤에
sql파일 에디트플러스로 열어서
내용중 ") TYPE=MyISAM;" 부분으로 => ") ENGINE=MyISAM DEFAULT CHARSET=utf8;"로 전체 수정하고
새이름으로 저장해서 기존 인코딩이 "ANSI"로 되어있던걸 "UTF-8"로 변경하여 저장하였습니다.
약 16메가정도 되더군요.
그리고 다른 회원님 글을보니 (http://sir.kr/g5_tip/2678) sql파일 내용중
-- MySQL dump 9.11
--
-- Host: localhost Database: DB명
-- ------------------------------------------------------
-- Server version 4.0.30-log
--
-- Table structure for table `g4_auth`
--
CREATE TABLE g4_auth (
mb_id varchar(255) NOT NULL default '',
au_menu varchar(20) NOT NULL default '',
au_auth set('r','w','d') NOT NULL default '',
PRIMARY KEY (mb_id,au_menu)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `g4_auth`
--
--
-- Table structure for table `g4_board`
--
-- MySQL dump 10.13 Distrib 5.6.26, for Win64 (x86_64)
--
-- Host: localhost Database: DB명
-- ------------------------------------------------------
-- Server version 5.6.26
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
기존카페24에서 "config.php"파일을 다운로드 받은뒤 "config_utf8.php"로 이름을 변경하고
그누보드설치폴더 루트에 업로드하고 해당 "config_utf8.php"를 다시 불러와
내용중 73번라인에 "$g4['charset'] = "에 "euc-kr"로 되어있던걸 "utf-8"로 변경하고
인코딩형식 역시 utf-8로 지정후 저장하였습니다.
그리고는 mysql을 이용해 해당 DB로 복원을 하였습니다.
커맨드창에서 "mysql -u root -p db명 < 백업파일명.sql"
복원중에 중복데이터가 오류가 생겨서 2개 라인정도만 내용을 살짝 바꾸고 복원을 하고
DB내용을 확인하니 기존 G5테이블외에 G4테이블 생성이 된걸 확인하고
한글깨짐도 없이 정상적으로 입력이 되었습니다.
(참고로 오류내용은
ERROR 1062 (23000) at line 1557: Duplicate entry '2014-07-04-諛붾퉬?-121.139.99.56' for key 'index1'
ERROR 1062 (23000) at line 1678: Duplicate entry '2016-04-21-?곗닔?-211.207.90.197' for key 'index1'
이렇게 두 곳이었는데 제일끝에 IP로 보이는 부분을 제일 마지막 숫자만 다르게 바꿔서 저장하였습니다.)
그리고 마지막으로 새로 설치한 그누보드5 최고관리자 로그인한후
g4_import.php를 실행하고 컨피그 파일 위치에"./config_utf8.php"로 지정하고
확인을 누르 완료가 되었다고 재빠르게 화면을 표시해 주는데
실상 다시 열어보면 g4테이블에만 데이터가 남아 있고 g5쪽에는 들어가져 있지 않습니다.
뭐가 문제인지 도저히 모르겠습니다.ㅡ.ㅜ
답변 2
g4_import_run.php를 열어서
sql_query(" INSERT INTO {$g5['member_table']} SET $sql_common ");
--->아래 처럼 수정해서 실행해보세요. 오류가 보일 겁니다
sql_query(" INSERT INTO {$g5['member_table']} SET $sql_common ", true); exit;
오류내용으로 봐서는 중복 데이터 입력오류로 보이지만 그 원인으로는 캐릭터셋 설정이 맞지 않는 문제 인거같습니다.
보통 utf-8 에서 utf-8로 이전하는부분은 큰 문제가 없으나 euc-kr 디비에서 utf-8로 이전시에는 문제가 발생할수있습니다. 문서의 언어셋 테이블의 언어셋 다 맞춰주셔야 합니다.
mysqldump --default-character-set=utf8 디비명 > 파일 혹시 덤프된 테이블의 캐릭터 셋이 utf8이 아닌 경우로 지정되어 있을경우 utf8로 변경 mysql --default-character-set=utf8 < 파일