svn cleanup
작업 복사본에서 변경 사항을 커밋 할 수 없기 때문에 a를 시도 했는데 다음 오류가 발생했습니다.
sqllite : 데이터베이스 디스크 이미지 형식이 잘못되었습니다.
지금 무엇을 할 수 있습니까?
답변:
나는 같은 문제가 있었다. 다음 블로그 게시물이이 문제를 해결하는 데 도움이되었습니다. 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 폴더를 복사 할 수있는 옵션이 있습니다. 그런 다음 이전 복사본이 다시 작동하고 임시 폴더를 삭제할 수 있습니다.
Error: unable to identify the object to be reindexed
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
ROLLBACK;
에 COMMIT;
doung 전과 .read dump_all.sql
.
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/…
sqlite3 .svn/wc.db 'PRAGMA user_version;'
올바른 번호를 얻으려면 원래 db에 대해 실행 합니다. 2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
올바른 번호로 복원 된 버전에 대해 실행 합니다.
SVN 정리가 작동하지 않았습니다. 내 로컬 시스템의 SVN 폴더가 손상되었습니다. 그래서 방금 폴더를 삭제하고 새 폴더를 다시 만들고 SVN에서 업데이트했습니다. 문제가 해결되었습니다!
정전 후 데이터베이스 디스크 이미지가 잘못된 오류이며 제안 된 reindex nodes 명령이 위반 된 제약 조건으로 인해 모든 문제를 해결하지 못했습니다. 또한 http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E에 설명 된 절차로 문제가 해결되지 않았습니다.
제 경우에는 해결책 :
원래 svn 체크 아웃에 수정되거나 버전이없는 파일이 많이 포함되어 있고 새로운 svn 체크 아웃으로 전환하고 싶지 않은 경우 유용 할 수 있습니다.
피어 작업자의 디렉터리에서 .svn 폴더를 복사하여 문제를 해결했습니다.
내 연구를 통해 두 가지 실행 가능한 솔루션을 찾았습니다.
모든 유형의 연결을 사용하는 경우 ssh, samba, 마운트, 연결 해제 / 마운트 해제 및 다시 연결 / 재 마운트. 다시 시도하면 종종 문제가 해결되었습니다. 그 후 svn 정리를 수행하거나 문제가 발생한시기에 따라 정상적으로 작업을 계속할 수 있습니다. 내 컴퓨터를 재부팅해도 문제가 한 번 해결되었습니다 ... 예, 내가 아는 바보입니다!
어떤 경우에는 파일을 rm -rf (또는 용어에 익숙하지 않은 경우 svn 폴더를 삭제)하고 svn 저장소를 다시 한 번 다시 확인하는 것입니다. 이것이 항상 문제를 해결하는 것은 아니며 잃고 싶지 않은 변경 사항이있을 수도 있습니다. 그래서 두 번째 옵션으로 사용합니다.
이것이 여러분에게 도움이되기를 바랍니다!
시각적 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
자동으로 생성됩니다.
숨겨진 .svn 폴더를 삭제 한 다음 동일한 URL로 폴더에서 체크 아웃을 수행하여 나에게 발생하는 인스턴스에 대해이 문제를 해결했습니다.
이것은 내 수정 된 파일을 덮어 쓰지 않고 서버에서 새 복사본을 가져 오는 대신 기존 파일을 모두 버전 화했습니다.
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를 복원 한 다음 모든 변경 사항을 다시 커밋했습니다. 정말 악몽이었습니다.
디렉터리 잠금 장치에 대해 걱정할 필요가 없습니다.
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 저장소에서 작업하고 문제없이 작업을 커밋, 업데이트, 추가, 제거 할 수 있습니다.
:-)
앱 개발 중에 메시지가 빈번하고 방대한 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)