100

我试图做 asvn cleanup因为我无法在我的工作副本中提交更改,并且我收到以下错误:

sqllite:数据库磁盘映像格式错误

清理未能处理以下路径

我现在能做什么?

4

18 回答 18

107

首先,在存储库根目录(作为子文件夹的文件夹)打开command/ :terminal.svn

cd /path/to/repository

下载sqlite3可执行文件并将其放在文件sqlite3夹的根目录下。

您对跟踪存储库 ( /path/to/repository/.svn/wc.db) 的 sqlite 数据库进行完整性检查:

sqlite3 .svn/wc.db "pragma integrity_check"

那应该报告一些错误。

然后,您可以通过执行以下操作来清理它们:

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

如果在那之后仍然有错误,您仍然可以选择将存储库的新副本检出到临时文件夹并将 .svn 文件夹从新副本复制到旧副本。然后旧副本应该可以再次使用,您可以删除临时文件夹。

于 2013-04-08T08:43:03.480 回答
28

完整性检查

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
于 2015-06-18T17:06:18.230 回答
20

SVN 清理不起作用。我本地系统上的 SVN 文件夹已损坏。所以我只是删除了文件夹,重新创建了一个新文件夹,然后从 SVN 更新。这解决了问题!

于 2013-05-30T18:52:40.917 回答
16

停电后,我遇到了数据库磁盘映像格式错误的错误,并且由于违反约束,建议的重新索引节点命令没有解决所有问题。此外, http: //mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E中描述的过程也没有解决问题。

在我的情况下的解决方案:

  • 再次将 svn 存储库签出到临时文件夹中
  • 复制(即替换)文件“.svn/wc.db”从新结帐到损坏的结帐

如果您的原始 svn checkout 包含许多已修改或未版本化的文件并且您不想切换到新的 svn checkout,这可能很有用。

于 2014-07-12T12:28:40.117 回答
13

我从同行工作人员的目录中复制了 .svn 文件夹,这解决了这个问题。

于 2014-07-28T11:30:51.657 回答
3
  1. 在另一个地方查看这个 svn
  2. 显示隐藏的 .svn 文件
  3. 替换wc文件

这对我有用!

于 2017-01-04T05:51:24.303 回答
2

也许,可能是一个解决方案:

  1. 鼠标右键单击项目
  2. 团队 -> 断开连接
  3. 选择:同时删除...

现在,再次重新连接:

  1. 鼠标右键单击项目
  2. 团队 -> 分享项目
  3. 选择你的repositorie:我的SVN(其他情况:git等)
  4. 选择你的repositorie文件夹

笔记:

就我而言,我备份了我的文件。(安全的你回来:P)

编辑:

我说的是SVN插件Eclipse:)

于 2013-04-02T07:03:16.913 回答
2

不要浪费您的时间checking integrity或从表中删除数据,work queue因为这些是临时解决方案,它会在一段时间后打击您。

只需再做一个checkout并将现有的 .svn 文件夹替换为新文件夹即可。做一个update,然后它应该很顺利。

于 2018-11-18T16:25:21.573 回答
1

我解决了我的视觉 svn 服务器 rep-cache.db 损坏问题。

他们是两个解决方案。

停止 Visual SVN 服务器服务。

从 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

它将自动创建。

于 2014-07-23T10:20:56.330 回答
1

如果你安装了 Tortoise SVN,请到任务管理器并停止它。然后尝试删除该文件夹。它会起作用的

于 2014-09-16T08:39:30.977 回答
1

在我的研究中,我发现了 2 个可行的解决方案。

  1. 如果您使用任何类型的连接,ssh、samba、安装、断开/卸载和重新连接/重新安装。再试一次,这通常为我解决了问题。之后,您可以进行 svn cleanup 或继续正常工作(取决于问题出现的时间)。重新启动我的计算机也解决了一次问题......是的,我知道这很愚蠢!

  2. 有时要做的就是 rm -rf 您的文件(或者如果您不熟悉该术语,只需删除您的 svn 文件夹),然后再次重新检查您的 svn 存储库。请注意,这并不总能解决问题,您可能还有不想丢失的更改。这就是为什么我使用它作为第二个选项。

希望这对你们有帮助!

于 2013-09-12T21:28:39.310 回答
1

你在颠覆网站上看过这篇文章吗?您还可以尝试按照此处所述直接验证和“修复”数据库。(请注意,我不是专家,我只是做了一个快速的谷歌搜索。可能与您的问题完全无关)。

就个人而言,我会尝试再次检查 repo 并重新应用您的更改。不确定在您的情况下这是否可行?

于 2012-12-03T00:48:51.740 回答
1

我通过删除隐藏的 .svn 文件夹,然后对该文件夹执行签出到相同的 URL 来修复它发生在我身上的一个实例。

这并没有覆盖我修改过的任何文件,只是对所有现有文件进行了版本控制,而不是从服务器获取新副本。

于 2018-03-09T19:21:50.543 回答
0

根据颠覆清理,标记的答案可能是正确的答案。但是这个错误绝对是一个通用的错误,它把我带到了这个问题页面。

我们的项目有依赖 System.Data.SQLite 并且错误消息是相同的:

数据库磁盘映像格式错误

就我而言,我已经通过SQLiteStudio 3.1.1执行了以下检查脚本和以下内容。

pragma integrity_check

(我不知道这些统计数据是否会有所帮助,但无论如何我都会分享它们......)

数据库文件通过内存上的连接日志模式在日常使用中使用了 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”。

去年我遇到了这个错误,我从备份中恢复了数据库,然后重新提交了所有更改,这真是一场噩梦......

于 2020-02-10T14:17:01.523 回答
0

检查您尝试签出数据的本地机器空间。在我的情况下,我的 c 驱动器没有空间来完成结帐,所以错误来了:)

于 2021-10-11T05:42:34.840 回答
-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 存储库上工作,毫无问题地进行提交、更新、添加、删除操作。

:-)

于 2015-09-10T05:25:55.473 回答
-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)
于 2017-08-18T14:30:48.697 回答
-4

cd 到包含 .svn 的文件夹

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force
于 2014-12-21T16:10:38.960 回答