이번엔 또 미디어위키(Mediawiki)를 쓰다가, utf-8 과 euc-kr의 캐릭터셋간의 문제로 고민하는 게시물들을 많이 읽게 되었다. 나 또한 지금까지의 작업결과를 잃고 싶지는 않았으므로, 또다시 새로운 시도를 하기 시작했다. 데비안(Debian) 서버에서 돌고 있는 미디어위키 DB(latin1)를 XP로 이전하면서 utf8로 전환하는 것이었다. 물론 나중에 데비안에서도 utf8로 전환할 것을 염두에 둔 것이었다.

 

Mysql DB생성방법과 XP에 미디어위키 설치하는 방법은 이미 게시물이 있으므로 언급하지 않고 DB백업만을 설명한다.

 

1. 먼저 데비안에서 DB를 백업받는다. 이 경우는 안전하게 latin1으로 받도록 했다. (utf8로 받아서 되는지는 확인하지 않았다.)

 

  # mysqldump -u wikiuser -p wikidb --default-character-set=latin1 > wikidb_latin1.sql

        <= 이렇게 하면 실제 백업데이타 속의 한글데이타의 캐릭터셋은 utf8이다.

 

2. 백업파일을 열어서 latin1을 utf8로 치환한다.

 

3. 백업파일에서 다음 줄을 숫자를 찾아서 오른쪽에 있는 값으로 수정한다. 이렇게 하지 않으면 에러가 생겨 DB를 복구할 수 없다.

 주) 아직 이해가 안 가는 것은 미디어위키설치에서는 에러 없이 만들어지는 table들이 백업복구시에는 에러메시지를 토해 낸다는 것이다. T_T

 ---------------------DUMP 파일 수정(미디어위키 1.13.2 의 경우)--------------------------

=====87===========
CREATE TABLE `categorylinks` (
  `cl_from` int(8) unsigned NOT NULL default '0',
  `cl_to` varchar(255) character set utf8 collate utf8_bin NOT NULL default '', 
<==200
  `cl_sortkey` varchar(86) character set utf8 collate utf8_bin NOT NULL default '',
  `cl_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_sortkey` (`cl_to`,`cl_sortkey`,`cl_from`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
====319,321========
CREATE TABLE `job` (
  `job_id` int(9) unsigned NOT NULL auto_increment,
  `job_cmd` varchar(255) NOT NULL default '',  
<==100
  `job_namespace` int(11) NOT NULL,  
<==100
  `job_title` varchar(255) character set utf8 collate utf8_bin NOT NULL,
  `job_params` blob NOT NULL,
  PRIMARY KEY  (`job_id`),
  KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
===536,537=========
CREATE TABLE `page_restrictions` (
  `pr_page` int(8) NOT NULL,
  `pr_type` varchar(255) NOT NULL, <==100
  `pr_level` varchar(255) NOT NULL, 
<==100
  `pr_cascade` tinyint(4) NOT NULL,
  `pr_user` int(8) default NULL,
  `pr_expiry` char(14) character set utf8 collate utf8_bin default NULL,
  `pr_id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`pr_page`,`pr_type`),
  UNIQUE KEY `pr_id` (`pr_id`),
  KEY `pr_page` (`pr_page`),
  KEY `pr_typelevel` (`pr_type`,`pr_level`),
  KEY `pr_level` (`pr_level`),
  KEY `pr_cascade` (`pr_cascade`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

------------------------DUMP 파일 수정---------------------------------------------

 

4. DB가 정상적으로 복구되었으면 웹페이지를 띄워보면 된다.

Posted by novice9

댓글을 달아 주세요


블로그 이미지
이 블로그는 삽질을 기록하는 곳입니다. ^_^
novice9
텍스트큐브,티스토리 검색

달력

 « |  » 2021.9
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

최근에 받은 트랙백

글 보관함

Yesterday21
Today13
Total4,393,546