SVN 签入失败(sqlite[S5]:数据库已锁定)

SVN 签入失败(sqlite[S5]:数据库已锁定)

我在尝试签入文件时偶尔会遇到此问题

svn ci -m "commit message" file
Warning: post commit FS processing had error:
sqlite[S5]: database is locked 

Some more info
Server side OS --> Centos6.5 and svn version 1.8.5 
Client Side OS --> Centos 5.11 and svn version 1.7.7

我已经查看了一些论坛,这些是建议,但它们并不能解决我的问题

1: Check server load(Server is fairly idle when I faced this issue..checked load average,IO and memory utilization)
2: There is a longer commit is in progress at that time
3: Both server and client are in same geographic location

由于错误是间歇性的,并且我检查了 svn repo 文件是否存在(即文件是否正确签入),所以我不确定问题是什么。非常感谢任何帮助。

答案1

我相信这是一个客户端错误,而不是服务器端错误,根据您的评论,您似乎正在使用基于文件的 svn,因此唯一可以锁定的数据库是在客户端上。

尝试这个

$ cd /my/repository/.svn
$ mv wc.db wc.db.old
$ sqlite3 wc.db.old
sqlite> .backup main wc.db
sqlite> .exit

现在您有一个新的 wc.db,它不应该有任何锁定错误

如果一切正常,删除 wc.db.old

如果没有,你总是可以

$ mv wc.db.old wc.db

您将立即回到我发布此文章之前所述的位置......

但它应该可以工作....

答案2

如果您在文件系统上使用符号链接,请注意 SVN 也可能会感到困惑。

我的本地 SVN 目录实际上是指向真实本地 SVN repo 文件夹的目录符号链接。

让我们看看在移动文件时会出现什么问题:

为了使用 turtoise svn 移动文件,您可以先使用 Windows 资源管理器剪切(CTRL- X)文件,然后Paste从 turtoise SVN 上下文菜单中选择。

通常会出现一个 SVN 弹出窗口,SVN 会将您的文件移动到存储库内。但是现在出现了“数据库已锁定”消息。

发生了什么?

好吧,经过进一步检查,我发现当我在资源管理器中从“源”目录导航到移动的“目标”目录时,目录路径发生了变化。

原因是符号链接。

首次导航到移动的“源”目录(通过目录符号链接)时,路径仍显示符号链接名称。到目前为止一切顺利。

但是当我导航到“目标”目录时,Windows 资源管理器似乎突然解析了符号链接。现在地址栏中的路径看起来不同了。

这似乎让 SVN 感到困惑,它现在可能认为有两个不同的存储库,并且文件正在从一个存储库移动到另一个存储库?

答案3

我遇到了同样的问题。对我来说,这是因为项目文件夹在 OneDrive 内,而 OneDrive 正在同步同一个文件夹。当我停止同步 OneDrive 并关闭它时,问题就解决了。希望这能有所帮助

相关内容