我尝试执行“ a”是svn cleanup
因为无法提交工作副本中的更改,并且出现以下错误:
sqllite:数据库磁盘映像格式错误
我现在该怎么办?
我尝试执行“ a”是svn cleanup
因为无法提交工作副本中的更改,并且出现以下错误:
sqllite:数据库磁盘映像格式错误
我现在该怎么办?
Answers:
我有同样的问题。以下博客文章帮助我解决了该问题: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文件夹从新副本复制到旧文件夹。然后,旧副本应该可以再次使用,您可以删除临时文件夹。
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;'
对原始数据库运行以获取正确的编号。2. sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
对具有正确编号的还原版本运行。
停电后,我遇到了数据库磁盘映像格式错误,并且由于违反了约束,建议的reindex nodes命令不能解决所有问题。另外,http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E中描述的过程也无法解决问题。
我的解决方案:
如果原始的svn签出包含许多已修改或未版本控制的文件,并且您不想切换到新的svn签出,则这可能很有用。
我从同工的目录中复制了.svn文件夹,从而解决了该问题。
我解决了视觉SVN服务器rep-cache.db损坏的问题。
他们是两个解决方案。
停止Visual SVN服务器服务。
从sqllite网站下载sqllite3.exe shell,然后将其复制到repo的db文件夹中。
在仓库的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的签出操作,来解决此问题。
这不会覆盖我的任何修改文件,而只是对所有现有文件进行版本控制,而不是从服务器中获取新副本。
不要浪费时间checking integrity
或从中删除数据work queue
表表中因为这是临时解决方案,过一会儿您就会被打回。
只需再做一次,checkout
然后用新文件夹替换现有的.svn文件夹即可。做一个update
,然后它应该会顺利。
如果您安装了Tortoise SVN,请转到任务管理器并停止它。然后尝试删除该文件夹。它会工作
根据颠覆清除,标记的答案可能是正确的答案。但是错误绝对是一个普遍的错误,这导致我在此提问页面。
我们的项目具有依赖项System.Data.SQLite,并且错误消息相同:
数据库磁盘映像格式错误
就我而言,我已经通过SQLiteStudio 3.1.1执行了以下检查脚本和以下内容。
pragma integrity_check
(我不知道这些统计信息是否会有所帮助,但无论如何我都会分享它们……)
通过内存上的连接日志模式,DataBase文件每天使用1.5年,它的大小约为750 MB。每张表大约有140K条记录,而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”。
去年我遇到了这个错误,我从备份中还原了数据库,然后重新提交了所有更改,这真是一场噩梦...
我希望这个答案能有所帮助。
无需担心目录锁定人员。
您只需要做的是,如果未安装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操作。确保在一个操作中插入和更新多行或数据。
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)