1

当我现在检查 MorphX VCS 时,我收到以下消息:

无法在 SysVersionControlMorphXRevisionTable (SysVersionControlMorphXRevisionTable) 中创建记录。记录已经存在。

对于已经签出一次的东西,我已经能够通过获取最新信息然后新的签出/签入来解决这个问题。但是,当涉及到添加时,我完全被卡住了。对此有解决方案还是我们完全破坏了我们的 VCS?

注意:仅当我们尝试从开发项目签入时才会出现此错误。直接在 AOT 上签到不会出现此问题。

4

1 回答 1

3

只需查看表SysVersionControlMorphXRevisionTable(如果您无法访问,请使用 SQL)并查看重复记录可能是什么。唯一索引是ItemPathVersion。我怀疑你会在这里看到任何东西。

这很可能是此方法\Data Dictionary\Tables\SysVersionControlMorphXRevisionTable\Methods\latestVersionNumber中调用的问题,它试图获取当前的最高修订版本并被\Data Dictionary\Tables\SysVersionControlMorphXRevisionTable\Methods\create.

在方法行#48 中放一个断点,create看看是什么revision.Version,在插入之前,检查 SQL 中是否ItemPath/Version已经存在于 SQL 中。

我猜这可能是服务器/客户端缓​​存问题。要解决此问题,请刷新Tools>Caches. 如果这不能解决,并且无论如何都是一个好主意,请复制这些菜单项:

  • \Menu Items\Action\SysFlushAOD
  • \Menu Items\Action\SysFlushData
  • \Menu Items\Action\SysFlushDictionary
  • \Menu Items\Action\SysFlushReportServer

到一个新的菜单项并更改属性RunOn = Server。然后运行这些,它会刷新你的服务器缓存。如果这仍然不起作用,请尝试重新启动 AOS。

如果这不起作用,您的用户application user cache文件可能已损坏。关闭您的客户端并删除 %LocalAppData% 文件夹(通常为C:\Users\[user]\AppData\Local)中的 *.auc 和 *.kti 文件,然后重新打开您的客户端。

在您使用的环境中,您最近是否恢复了另一个数据库的副本?

编辑:现在知道您进行了数据库还原,您很有可能GLOBALGUID被重用和/或导致缓存问题。 有关如何/为什么发生这种情况的更多信息,请参见此处

您可能应该停止 AOS 并运行以下 SQL 命令:

UPDATE SYSSQMSETTINGS SET GLOBALGUID = '00000000-0000-0000-0000-000000000000'
DELETE FROM SYSCLIENTSESSIONS
DELETE FROM SYSSERVERSESSIONS

您是否也遇到批处理运行的问题?(有点相关,但我主要只是对这个问题感到好奇)

于 2014-12-15T17:33:19.753 回答