회사의 mantis를 1.0.8에서 1.1.4로 upgrade하고 twiki를 연동하려한다.
1차시도1.0.8에서도 db를 utf8로 설정하고 사용했으므로 mantis만 upgrade 시도
- mantis-1.1.4를 unzip
- apache에서 잡히도록 설정
- upgrade guide를 따른다
- *.sample 파일들을 수정한 것 복사 (1.0.8로부터)
- config_inc.php에서 korean_utf8을 korean으로 변경(utf8이 default로 변경됨)
db로 부터 읽어오는 한글이 모두 깨져보인다.
2차시도db에 한글을 저장할 때, mantis 1.0.8이 utf8 변환을 수행하지 않는 걸로 보임
- 이전 관리자가 db 설정은 utf8로 되어 있지만 mantis가 한글을 euckr로 다룬다는 점을 간과한 것으로 보임
- 표준툴에서 한글이 모두 깨지는 현상으로부터 유추
- mysql --user=user --password=passwd --default-character-set=euckr --execute "select * from mantis.mantis_user_table;"
- mysql gui( show variables like '%character%'로 확인한 결과 utf8 사용)
- mysqldump --user=user --password=passwd --default-character-set=utf8 -r dump.sql mantis
인터넷에서 mysql ut8 변환관련 글을 찾아서 시행해봄.
2008/10/22 mantis 1.0.8 -> 1.1.x upgrade
utf8로 변환된 script file을 mysql이나 mysqlimport가 제대로 처리하지 못하는 듯한 결과가 나옴
mysql gui 툴을 이용해서 시도해봤으나 동일한 결과가 나옴
- windows용 mysql 클라이언트들은 utf8로 encoding 돼있는 파일을 다룰 수 없는 것으로 보임
성공하고 복기해보니 utf8로 인코딩된 스크립트 잘 처리함, latin1과 utf8 인코딩이 혼재된 상환에서 발생한 문제로 보임
- mysqldump의 --hex-blob을 사용해서 만든 script를 windows용 client들이 해석하지 못함
db에 utf8과 latin1이 혼재되어 있을 수 있다는 내용의 문서 발견
- blob data를 mysql gui를 이용해서 검색해 보니 정상적으로 들어가 있음
- 즉 한글 텍스트는 깨진상태(utf8 변환없이 mantis에서 밀어넣은 상태)지만 나머지 정보는 정상인 상황
3차시도db에 들어간 문자 정보를 그대로 받아서 utf8로 올리는 시도
mysqldump --user=user --password=passwd --default-character-set=latin1 --skip-set-charset -r dump.sql mantis
mysql --user=user --password=passwd --execute="DROP DATABASE mantis; CREATE DATABASE mantis CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=user --password=passwd --default-character-set=utf8 mantis < dump.sql
성공함, 2차시도에서 설명된 문서에 있는 내용과 동일한 방법.
단 이미 db가 utf로 설정되어있었으므로 latin1 -> utf8 변환은 필요없음