我正在尝试执行svn cleanup
,因为我无法在工作副本中提交更改,并且出现以下错误:
sqllite:数据库磁盘映像格式错误
我现在能做些什么?
答案 0 :(得分:88)
我遇到了同样的问题。以下博客文章帮助我解决了这个问题: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
对sqlite数据库执行完整性检查以跟踪存储库(/.svn/wc.db):
sqlite3 .svn/wc.db "pragma integrity_check"
那应该报告一些错误。
然后您可以通过执行以下操作来清理它们:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
如果之后仍有错误,您仍然可以选择将存储库的新副本签出到临时文件夹,并将.svn文件夹从新副本复制到旧副本。然后旧副本应该再次工作,您可以删除临时文件夹。
答案 1 :(得分:17)
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 :(得分:16)
SVN清理不起作用。我本地系统上的SVN文件夹已损坏。所以我刚删除了该文件夹,重新创建了一个新文件夹,并从SVN更新。这解决了这个问题!
答案 3 :(得分:12)
电源中断后,我遇到数据库磁盘映像格式错误错误,建议的reindex nodes命令没有解决因违反约束而导致的所有问题。此外,http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E中描述的过程无法解决问题。
我的解决方案:
如果您的原始svn checkout包含许多已修改或未版本控制的文件且您不想切换到新的svn结帐,这可能很有用。
答案 4 :(得分:12)
我从同行工作人员的目录中复制了.svn文件夹并解决了问题。
答案 5 :(得分:2)
也许,可能是一个解决方案:
现在,再次重新连接:
repositorie
:我的SVN
(其他情况:git等)repositorie
文件夹注意:
在我的情况下,我做了我的文件备份。 (安全回复:P)
修改:
我在谈论SVN
上的Eclipse
插件:)
答案 6 :(得分:2)
这适合我!
答案 7 :(得分:1)
您是否在颠覆网站上看到了this post?您还可以尝试直接验证并“修复”数据库,如here所述。 (请注意,我不是专家,我只是进行了快速谷歌搜索。可能与您的问题无关。)
就个人而言,我会尝试再次检查回购并重新应用您的更改。虽然在你的情况下,不确定这是否可行?
答案 8 :(得分:1)
在我的研究中,我发现了两种可行的解决方案。
如果您正在使用任何类型的连接,请使用ssh,samba,mount,disconnect / unmount以及重新连接/重新连接。再试一次,这经常为我解决问题。之后你可以进行svn清理或者继续正常工作(取决于出现问题的时间)。重新启动计算机也解决了一次问题...是的,我知道这是愚蠢的!
有些时候要做的就是rm -rf你的文件(或者如果你不熟悉这个术语,只需删除你的svn文件夹),并再次重新检查你的svn存储库。请注意,这并不总能解决问题,您可能还有一些不想丢失的更改。这就是我将它作为第二种选择的原因。
希望这可以帮助你们!
答案 9 :(得分:1)
我解决了我的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退出sqllite。
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- 第二个解决方案 -
删除rep-cache.db
del rep-cache.db
它将自动创建。
答案 10 :(得分:1)
I fixed this for an instance of it happening to me by deleting the hidden .svn folder and then performing a checkout on the folder to the same URL.
This did not overwrite any of my modified files & just versioned all of the existing files instead of grabbing fresh copies from the server.
答案 11 :(得分:1)
请不要在xs ++ [y]
上浪费时间或从checking integrity
表中删除数据,因为这是暂时的解决方案,过一会儿您就会回来。
只需再做一个work queue
,然后用新的文件夹替换现有的.svn文件夹。进行checkout
,然后应该顺利进行。
答案 12 :(得分:0)
如果您安装了Tortoise SVN,请转到任务管理器并停止它。 然后尝试删除该文件夹。它会起作用
答案 13 :(得分:0)
根据颠覆清除,标记的答案可能是正确的答案。但是错误绝对是一个普遍的错误,导致我在此找到问题页面。
我们的项目具有依赖项System.Data.SQLite,并且错误消息相同:
数据库磁盘映像格式错误
就我而言,我已经通过SQLiteStudio 3.1.1执行了以下检查脚本和以下检查脚本。
pragma integrity_check
(我不知道这些统计信息是否会有所帮助,但我还是要分享给他们...)
通过内存上的连接日志模式,DataBase文件每天使用1.5年,其大小约为750 MB。每张表大约有14万条记录,其中有6张如此大。
执行完整性检查脚本后,执行30分钟后返回了11行。
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;
重新索引后,完整性检查结果为“ ok”。
我去年遇到此错误,我从备份中还原了数据库,然后重新提交了所有更改,这真是一场噩梦...
答案 14 :(得分:-2)
在应用程序开发期间,我发现消息来自频繁且大量的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)
答案 15 :(得分:-4)
cd到包含.svn的文件夹
rm -rf .svn
svn co http://mon.svn/mondepot/ . --force