database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 7400 게시물 읽기
No. 7400
[UNICODE] 업그레이드 시 restore에 문제가 발생합니다.
작성자
강현웅
작성일
2008-04-16 11:47
조회수
6,119

현재 8.0.0 버전을 업그레이드 하기 위해 테스트를 하고 있습니다.


UTF-8 데이타 이기 때문에 restore시 문제가 없을 거라 생각했으나,


계속해서 에러가 나고 있습니다. 에러메세지는 "UNICODE ... 인코딩에서 사용할 수 없는 문자가 있음" 입니다.


일단, 업그레이드를 해보기 위해 3가지 버전에서 테스트를 해봤습니다.


8.0.3  - 복구 잘됨.

8.0.15 - 에러 발생

8.2.7  - 에러 발생


버전에 따라 인지하는 UNICODE가 차이가 있을리 없다고 생각하는데요. 무엇이 문제인지 잘모르겠네요.

이 글에 대한 댓글이 총 7건 있습니다.

8.0.11 버전 릴리스 노트에 보면

Tighten security of multi-byte character processing for UTF8 sequences over three bytes long (Tom)

라고 되어있는데 이 문제일지도 모르겠네요..


저도 예전에 8.0을 8.1로 업그레이드하다가 이런 비슷한 문제를 격었는데.. 어떻게 해결했는지는 기억이 안나네요..(^^;)

최정대(whitekid)님이 2008-04-16 12:16에 작성한 댓글입니다.
같은 답변 글 계속 올리기 낯 뜨겁지만....


iconv -c -f utf8 -t utf8 dumpdata.sql > dumpdata_utf8.sql

해서 잘못된 utf8을 제거하고 다시 로딩해 보시죠
그냥님이 2008-04-16 15:02에 작성한 댓글입니다. Edit

답변 감사힙니다.


저도 사이트를 돌아다니다가, 같은 내용의 글을 봤습니다.


iconv 의 -c 옵션을 줄 경우, 잘못된 수정을 하는 것이 아니고, 삭제를 해준다고 나와 있더군요.


그러면... 날아갈 데이타가 생기는데... ㅋ~ 그래서 생각한 것이 restore 할 때, 에러 문을 보고


데이터를 기록해 두었다가 다시 입력하는 것을 생각중에 있습니다.


너무 원시적이죠? 쩝...

강현웅님이 2008-04-16 15:40에 작성한 댓글입니다. Edit

일단 copy 문에서 저 에러가 나면 그 row만 DB 에 입력이 안되는 것이 아니라 그 테이블의 데이터 전체가 입력 되지 않습니다

위에 있는대로 일단 변환해서 입력해서 문제가 없는지 확인하시고

달라진 사항은 

diff dumpdata.sql dumpdata_utf8.sql 로 비교해서 필요한 사하이면 수작업으로 넣으주면 어떨까요

그냥님이 2008-04-16 16:43에 작성한 댓글입니다. Edit

말씀하신대로 해보려 하니.. 덤프 파일 사이즈가 커서 할 수가 없더군요..


제가 사용한 쉘스크립트 올립니다.


----------------------------------------------

#!/bin/sh


source='source.sql'

target='clear.sql'


split -a 5 -C 1000000 $source sp_


slist=`ls sp_*`


for sl in $slist

do

#echo "$sl...."


clear_file="${sl}_clear"


iconv -c -f utf8 -t utf8 $sl -o $clear_file


diff -ruN $sl $clear_file > diff.txt


cat $clear_file >> $target

done


rm -f sp_*

------------------------------


이렇게 해서 돌린 clear.sql을 사용했는데... 실패 했습니다.


diff 내용도 넘 많아서 보는데 시간이 좀 많이 걸릴 것 같네요.

강현웅님이 2008-04-16 19:33에 작성한 댓글입니다.
이 댓글은 2008-04-16 20:22에 마지막으로 수정되었습니다. Edit

어떤 문자 때문에 그런지 궁금하네요.

iconv로 처리했는데도 안되다니...

에러 날 때에 라인넘버가 표시 되지 않나요? 혹시 이상한 문자라도 보이시는지...

박성철(gyumee)님이 2008-04-16 19:56에 작성한 댓글입니다.

변환전에는 0xb1 코드 였구요. 변환 후 에는 Oxedb59f 라는 코드입니다.

강현웅님이 2008-04-16 21:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7405질문입니다. [1]
처리
2008-04-17
5794
7404function에 array전달하기질문입니다 - 트랜잭션도 질문드려요 [3]
서정주
2008-04-17
6980
7401sql구문강조머쓰세요? [2]
서정주
2008-04-16
6437
7400[UNICODE] 업그레이드 시 restore에 문제가 발생합니다. [7]
강현웅
2008-04-16
6119
7399UTF-8 DB의 한글을 ORACLE KSC locale에 넣을려고 합니다. [2]
정진기
2008-04-16
6135
7398PostgreSQL과 Oracle의 호환성 문의 [1]
산사랑
2008-04-16
7199
7397윈도우에서 dblink 사용하기 [5]
영광
2008-04-15
6877
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다