2012-11-27 2 views
1

오래된 데이터베이스가있어서 FireBird 2.5로 변환하려고합니다. 잘 알고있는 문제에 방울 텍스트 필드가 들어 테이블의 데이터를 복원 할 때 문제가 발생합니다 "오류 : 잘못된 문자열 GBAK : GBAK를 잘못된 데이터가 감지"gbak 및 fix_fss_data를 사용하는 FireBird 2.5 데이터베이스 복원은 잘못된 형식의 문자열을 반환합니다.

단계를 수행 :

1) gfix -user SYSDBA -password masterkey f : \ dbb.db -shut -force 0
2) gfix -v -full -user SYSDBA - 암호 masterkey f : \ dbb.db
3) gbak -v -t -g -ig -user SYSDBA - YF : \ backup.log -password "masterkey"f : \ dbb.db F : \ dbb1.db
4) gbak -r -v -o -p 16384 -YF : \ log.txt -user SYSDBA - 암호 masterkey "f : \ dbb1.db" "f : \ new.db"-fix_fss_data win1251 -rep

문자 집합을 win1252, utf8 또는 unicode_fss로 바꾸어도 문제가 해결되지 않습니다.

또한 InterBase Data Pump 버전 3.4를 사용하여 데이터를 마이그레이션하려고 시도했습니다.

단계 : 1) 백업 메타 테이블
2) 새 데이터베이스
3) "잘못된 문자열"발생 인터베이스 데이터 펌프

오류를 사용하여 데이터를 마이그레이션에 대한 메타 테이블을 복원합니다.

모든 테이블이있는 오류 유형의 필드가 발생 "BLOB의 SUB_TYPE 1 세그먼트 크기를 80"

내가 처음에 데이터베이스가 문자 세트 WIN1252을 한 것으로 생각한다. 그 후 누군가가 charset을 UTF8로 변경하고 charset의 모든 필드 정의를 변경하고 WIN1252에서 UTF8로 대조합니다. 그렇지 않으면 나는 왜이 잘못된 형식의 문자열 오류가 발생하는지 이해하지 못합니다. 또한,이 문제는 파이어 버드 2.0에서 파이어 버드 2.5 로의 마이그레이션에 공통적이라고 이해했습니다.

아무도이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

+0

무료 유틸리티 FDBCONVERT http://gsbelarus.com/gs/fdbconvert/index.html을 사용하지 않는 이유는 무엇입니까? –

+0

with FDBConvert - Microsoft Visual C++ 런타임 라이브러리 --------------------------- 런타임 오류! 프로그램 : F : \ a \ FDBConvertPortable \ FDBConvert.EXE R6025 - 순수 가상 함수 호출 오전 10시 44분 57초 : 조작 된 문자열 검색 잘못된 데이터 : 데이터베이스 동안 메시지 복구가 발생했습니다. -FIX_FSS_DATA 옵션 – RBA

답변

2

에 스위치 -fix_fss_m을 사용해야합니다 바보 소리도,이 방법으로 해결 : 메타 테이블
는 새 데이터베이스 파일을 복원 만들

백업
스크립트
에 IBExpert를 사용하여 이전 테이블에서 데이터를 추출 새 데이터베이스로 모든 데이터를 가져 오지 않은 다른 캐릭터 세트로 새 데이터베이스를 데이터를

-fix_fss_D의 조합 없음 또는 fix_fss_m를 추가하지 스크립트를 실행합니다. 결과없이 모든 무료 및 셰어웨어 도구를 사용해 보았습니다.

5

조작 된 문자열 오류 데이터에서 올 수 있으며 스위치 -fix_fss_d으로이 문제를 해결 할 수 있습니다뿐만 아니라 메타 데이터에서 올 수 있으며

-FIX_FSS_D[ATA]

This switch forces gbak to fix malformed UNICODE_FSS character data during a restore.

This switch, and the following one, should not be required under normal circumstances. However, if a restore operation fails with a "malformed string" error, the message output from gbak will refer the user to one or both of these switches to fix the malformed UNICODE_FSS data or meta data as appropriate.

-FIX_FSS_M[ETADATA]

This switch forces gbak to fix malformed UNICODE_FSS metadata during a restore.

This switch, and the preceding one, should not be required under normal circumstances. However, if a restore operation fails with a "malformed string" error, the message output from gbak will refer the user to one or both of these switches to fix the malformed UNICODE_FSS data or meta data as appropriate.

링크 firebird gbak utility

+0

을 사용하여 복원해도 메타 데이터를 수정해도 테이블의 모든 데이터가 복원되지 않습니다. +1, 감사합니다. – RBA

관련 문제