svn 정리 : sqlite : 데이터베이스 디스크 이미지의 형식이 잘못되었습니다.


93

svn cleanup작업 복사본에서 변경 사항을 커밋 할 수 없기 때문에 a를 시도 했는데 다음 오류가 발생했습니다.

sqllite : 데이터베이스 디스크 이미지 형식이 잘못되었습니다.

정리가 다음 경로를 처리하지 못했습니다.

지금 무엇을 할 수 있습니까?

답변:


98

나는 같은 문제가 있었다. 다음 블로그 게시물이이 문제를 해결하는 데 도움이되었습니다. http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html

저장소 (/.svn/wc.db)를 추적하는 sqlite 데이터베이스에서 무결성 검사를 수행합니다.

sqlite3 .svn/wc.db "pragma integrity_check"

일부 오류를보고해야합니다.

그런 다음 다음을 수행하여 정리할 수 있습니다.

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

그 후에도 여전히 오류가있는 경우 저장소의 새 사본을 임시 폴더로 체크 아웃하고 새 사본에서 이전 사본으로 .svn 폴더를 복사 할 수있는 옵션이 있습니다. 그런 다음 이전 복사본이 다시 작동하고 임시 폴더를 삭제할 수 있습니다.


6
이것은 실제로 내 문제를 해결했습니다. 대단히 감사합니다.
Erdogan Kurtur 2013

17
여전히 오류 : 데이터베이스 디스크 이미지가 잘못되면 어떻게합니까?
j는

3
@jwill 나는 또한 위의 솔루션을 구현 한 후 오류가 발생했습니다 ...하지만 내가 시도한 것은 단순히 저장소의 새 복사본을 체크 아웃 한 다음 새 체크 아웃 복사본의 .svn 폴더를 이전 복사본으로 덮어 쓰는 것입니다.
Rushabh Shah

6
이상한, 내가 얻을Error: unable to identify the object to be reindexed
Pacerier

4
링크 polak.ro/… 가 영구적으로 다운 된 것 같습니다.
MadMike

21

무결성 검사

sqlite3 .svn/wc.db "pragma integrity_check"

정리

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

또는

백업 파일로 읽을 수있는 데이터베이스의 내용을 덤프 한 다음 새 데이터베이스 파일에 다시 넣을 수 있습니다.

sqlite3 .svn/wc.db

sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump
sqlite> .exit

mv .svn/wc.db .svn/wc-corrupt.db
sqlite3 .svn/wc.db

sqlite> .read dump_all.sql
sqlite> .exit

2
이것은 다른 소프트웨어에서 발생한 오류를 해결하는 데 도움이되었으므로 감사합니다!
Azirius

나를 위해 "reindex nodes"명령이 실패했지만 대체 해결 방법 (덤프에서 db 재생성)이 도움이되었습니다! 감사.
EvAlex 2016

1
나는 모든 것을 버리지는 않았지만 충분했습니다. 는 SQL 파일을 통해 스크롤 및 최종 변경 ROLLBACK;COMMIT;doung 전과 .read dump_all.sql.
Jan Katins 2018

2
이 접근 방식은 이제 오류와 함께 실패한 것처럼 보이지만 svn: E235000: In file 'D:\Development\SVN\Releases\TortoiseSVN-1.9.7\ext\subversion\subversion\libsvn_wc\wc_db_wcroot.c' line 311: assertion failed (format >= 1)여기에 해결 방법이 있습니다. hanscarpenter.blogspot.com.au/2016/05/…
mpeac

어설 션 오류에 대한 적절한 수정은 다음과 같습니다. 1. sqlite3 .svn/wc.db 'PRAGMA user_version;'올바른 번호를 얻으려면 원래 db에 대해 실행 합니다. 2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'올바른 번호로 복원 된 버전에 대해 실행 합니다.
Chronial

19

SVN 정리가 작동하지 않았습니다. 내 로컬 시스템의 SVN 폴더가 손상되었습니다. 그래서 방금 폴더를 삭제하고 새 폴더를 다시 만들고 SVN에서 업데이트했습니다. 문제가 해결되었습니다!


1
이것이 가장 쉬운 해결책입니다. 새 작업 사본을 가져 와서 svn co URL로 작업하십시오.
Jahmic 2011

16

정전 후 데이터베이스 디스크 이미지가 잘못된 오류이며 제안 된 reindex nodes 명령이 위반 된 제약 조건으로 인해 모든 문제를 해결하지 못했습니다. 또한 http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E에 설명 된 절차로 문제가 해결되지 않았습니다.

제 경우에는 해결책 :

  • svn 저장소를 다시 임시 폴더로 체크 아웃하십시오.
  • 새 체크 아웃에서 손상된 파일로 ".svn / wc.db"파일을 복사, 즉 교체합니다.

원래 svn 체크 아웃에 수정되거나 버전이없는 파일이 많이 포함되어 있고 새로운 svn 체크 아웃으로 전환하고 싶지 않은 경우 유용 할 수 있습니다.


13

피어 작업자의 디렉터리에서 .svn 폴더를 복사하여 문제를 해결했습니다.


여기에서 우리는 단지 동일한 시스템에 새 작업 복사본을 확인할 수 있습니다 후 새을 .svn 폴더와 오래된을 .svn 폴더를 교체하고이 방법을 통해 우리는이 문제 ... 해결 할 수
Rushabh 샤

3
  1. 이 svn을 다른 곳에서 확인하십시오.
  2. 숨겨진 .svn 파일 표시
  3. wc 파일 교체

이것은 나를 위해 작동합니다!


2

아마도 해결책이 될 수 있습니다.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. 팀-> 연결 해제
  3. 선택 : 또한 삭제 ...

이제 다시 연결하십시오.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. 팀-> 프로젝트 공유
  3. 선택하십시오 repositorie: 내 SVN(기타 경우 : git 등)
  4. repositorie폴더 선택

노트 :

제 경우에는 파일을 백업했습니다. (안전한 UR : P)

편집하다:

나는 SVN플러그인에 대해 이야기하고 있습니다 Eclipse:)


1

Subversion 사이트 에서이 게시물 을 보셨습니까 ? 여기에 설명 된대로 데이터베이스를 직접 확인하고 "수정"할 수도 있습니다. . (저는 전문가가 아닙니다. 방금 빠른 Google 검색을 수행했습니다. 문제와 전혀 관련이 없을 수 있습니다.)

개인적으로 repo를 다시 확인하고 변경 사항을 다시 적용하려고합니다. 귀하의 경우에 이것이 가능한지 확실하지 않습니까?


감사합니다. 제안 사항을 보겠습니다.
Rubens Mariuzzo

다시 확인하는 것은 확실히 가장 쉬운 한가 지 (다시 적용 변경에 따라 ^^)하고 결국 무엇인가
elgui

나는 이것이 문제를 해결하지 못했고 Tortoise SVN에서 더 많은 오류를 일으켰습니다.
komorra

1

내 연구를 통해 두 가지 실행 가능한 솔루션을 찾았습니다.

  1. 모든 유형의 연결을 사용하는 경우 ssh, samba, 마운트, 연결 해제 / 마운트 해제 및 다시 연결 / 재 마운트. 다시 시도하면 종종 문제가 해결되었습니다. 그 후 svn 정리를 수행하거나 문제가 발생한시기에 따라 정상적으로 작업을 계속할 수 있습니다. 내 컴퓨터를 재부팅해도 문제가 한 번 해결되었습니다 ... 예, 내가 아는 바보입니다!

  2. 어떤 경우에는 파일을 rm -rf (또는 용어에 익숙하지 않은 경우 svn 폴더를 삭제)하고 svn 저장소를 다시 한 번 다시 확인하는 것입니다. 이것이 항상 문제를 해결하는 것은 아니며 잃고 싶지 않은 변경 사항이있을 수도 있습니다. 그래서 두 번째 옵션으로 사용합니다.

이것이 여러분에게 도움이되기를 바랍니다!


1

시각적 svn 서버 rep-cache.db 손상 문제를 해결했습니다.

두 가지 해결책이 있습니다.

Visual SVN Server 서비스를 중지하십시오.

sqllite 웹 사이트에서 sqllite3.exe 셸을 다운로드하고 repo의 db 폴더에 복사합니다.

repo의 db 폴더에있는 명령 프롬프트에서 다음 명령을 입력합니다.

-첫 번째 솔루션-

sqlite3 rep-cache.db

.clone rep-cache-new.db

ctrl + c를 눌러 sqllite를 종료합니다.

ren rep-cache.db rep-cache-old.db

ren re-cache-new.db rep-cache.db

-두 번째 솔루션-

rep-cache.db 삭제

del rep-cache.db

자동으로 생성됩니다.


Muhammad에게 감사합니다-내가 필요한 단서입니다! 문제가 작업 복사본의 sqlite db (s) 또는 서버의 db에 있는지 확인해야합니다. 명령 줄에서 커밋을 시도하십시오. 파일이 성공적으로 전송되고 "트랜잭션 커밋"중에 오류가 발생하면 문제가 서버 측에있을 수 있습니다. 여기서 무함마드의 결의는 매력처럼 작동합니다. 이 오래된 listserve 아카이브에는 자세한 내용이 있습니다 : svn.haxx.se/users/archive-2010-12/0257.shtml
powderflask

1

숨겨진 .svn 폴더를 삭제 한 다음 동일한 URL로 폴더에서 체크 아웃을 수행하여 나에게 발생하는 인스턴스에 대해이 문제를 해결했습니다.

이것은 내 수정 된 파일을 덮어 쓰지 않고 서버에서 새 복사본을 가져 오는 대신 기존 파일을 모두 버전 화했습니다.


1

시간을 낭비 checking integrity하거나 데이터를 삭제 하지 마십시오.work queue일시적인 해결책이며 잠시 후 다시 타격을받을 수 있으므로 테이블 .

다른 작업을 수행 checkout하고 기존 .svn 폴더를 새 폴더로 바꿉니다. 를 수행 update한 후 부드러운 가야한다.


0

Tortoise SVN을 설치 한 경우 작업 관리자로 이동하여 중지하십시오. 그런 다음 폴더를 삭제 해보십시오. 그것은 작동 할 것이다


0

Subversion 정리에 따르면 표시된 답변이 올바른 답변 일 수 있습니다. 그러나 오류는 확실히 일반적인 오류이며이 질문 페이지를 여기로 이끌었습니다.

우리 프로젝트에는 System.Data.SQLite 종속성이 있으며 오류 메시지는 동일합니다.

데이터베이스 디스크 이미지의 형식이 잘못되었습니다.

제 경우에는 SQLiteStudio 3.1.1을 통해 다음과 같은 check 스크립트와 다음을 실행했습니다 .

pragma integrity_check

(이 통계가 도움이 될지 모르겠지만 어쨌든 공유하겠습니다 ...)

DataBase 파일은 메모리의 연결 저널 모드를 통해 1.5 년 동안 매일 사용되며 용량은 약 750MB입니다. 테이블 당 약 14 만 개의 레코드가 있었고 6 개의 테이블이이 정도였습니다.

의 실행 후 무결성 검사 스크립트, 11 행은 실행 시간 30 분 반환되었습니다.

wrong # of entries in index sqlite_autoindex_MyTableName_1
wrong # of entries in index MyOtherTableAndOrIndexName_1
wrong # of entries in index sqlite_autoindex_MyOtherTableAndOrIndexName_2
etc...

모든 결과는 인덱스에 관한 것입니다. 각 인덱스를 다시 빌드 한 후 문제가 해결되었습니다.

reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;

재 인덱싱 후 무결성 검사 결과 "정상"이 발생했습니다.

작년에이 오류가 발생했고 백업에서 DB를 복원 한 다음 모든 변경 사항을 다시 커밋했습니다. 정말 악몽이었습니다.


-1

디렉터리 잠금 장치에 대해 걱정할 필요가 없습니다.

sqllite3가 설치되어 있지 않으면 아래 명령을 입력하십시오.

>sudo apt-get install sqlite3

이 명령을 입력하여 SVN 데이터베이스를 엽니 다.

>sqlite3 .svn/wc.db 

이제 SVN DB에서 잠금 항목을 제거하기 만하면됩니다.

sqlite>  select * from wc_lock;
1|-1           
sqlite>  delete from wc_lock;
sqlite>  select * from wc_lock;
sqlite>  .q

프로세스가 완료되었습니다. SVN 저장소에서 작업하고 문제없이 작업을 커밋, 업데이트, 추가, 제거 할 수 있습니다.

:-)


-2

앱 개발 중에 메시지가 빈번하고 방대한 INSERT 및 UPDATE 작업에서 오는 것을 발견했습니다. 한 번의 작업으로 여러 행 또는 데이터를 INSERT 및 UPDATE해야합니다.

var updateStatementString : String! = ""

for item in cardids {

let newstring = "UPDATE "+TABLE_NAME+" SET pendingImages = '\(pendingImage)\' WHERE cardId = '\(item)\';"
            updateStatementString.append(newstring)

        }


        print(updateStatementString)
        let results = dbManager.sharedInstance.update(updateStatementString: updateStatementString)

        return Int64(results)

-4

.svn을 포함하는 폴더로 cd

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.