我试图执行 svn cleanup
以清理我的工作副本因为我无法提交更改,但是我遇到了以下错误:
sqllite: 数据库磁盘映像损坏
现在我该怎么办?
我试图执行 svn cleanup
以清理我的工作副本因为我无法提交更改,但是我遇到了以下错误:
sqllite: 数据库磁盘映像损坏
现在我该怎么办?
首先,在存储库根目录下(具有子文件夹.svn
的文件夹)打开命令行
/终端
:
请按照以上要求进行翻译,以下是翻译内容:
cd /path/to/repository
下载sqlite3
,并将可执行文件sqlite3
放在文件夹根目录下。
对保存版本库的sqlite数据库(/path/to/repository/.svn/wc.db
)进行完整性检查:
sqlite3 .svn/wc.db "pragma integrity_check"
这将会报告一些错误。
然后你可以通过执行以下操作来清理它们:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
如果在这之后还有错误,你仍然可以选择将存储库的新副本检出到临时文件夹并将 .svn 文件夹从新副本复制到旧副本中。然后旧副本应该可以正常工作,您可以删除临时文件夹。
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;
,然后执行 .read dump_all.sql
。 - Jan Katinssvn: 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)
,但是有一个解决方法在这里:http://hanscarpenter.blogspot.com.au/2016/05/subversion-fails-du-to-power-outage.html。 - mpeacsqlite3 .svn/wc.db 'PRAGMA user_version;'
以获得正确的数字。2. 对具有正确数字的还原版本运行 sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
。 - ChronialSVN清理没有生效。我的本地系统上的SVN文件夹已经损坏了。所以我只是删除了文件夹,重新创建了一个新的文件夹,并从SVN更新了内容。问题解决了!
在一次停电后,我遇到了“数据库磁盘映像格式错误”的错误,并且建议的重新索引节点命令由于违反约束条件未能修复所有问题。此外,http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E所描述的过程也未能解决问题。
我的解决方法:
如果原始svn checkout包含许多已修改或未版本化的文件,并且您不想切换到全新的svn checkout,则此方法可能非常有用。
我从同事的目录中复制了 .svn 文件夹,这解决了问题。
这对我有用!
也许,这可能是一个解决方案:
现在,重新连接:
仓库
:我的SVN
(其他情况:git等)仓库
文件夹注意:
在我的例子中,我备份了我的文件。(保持安全 :P)
编辑:
我在谈论Eclipse
的SVN
插件 :)
我解决了 Visual SVN Server rep-cache.db 损坏的问题。
有两种解决方案。
停止 Visual SVN Server 服务。
从 sqllite 网站下载 sqllite3.exe shell 并将其复制到 repo 的 db 文件夹中。
在 repo 的 db 文件夹中,在命令提示符下键入以下命令。
-- 第一种解决方案 --
sqlite3 rep-cache.db
.clone rep-cache-new.db
按下 ctrl+c 退出 SQLite。
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
del rep-cache.db