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.

createメソッド行 #48にブレークポイントを配置して内容revision.Versionを確認し、挿入の前に SQL にItemPath/Versionが既に存在するかどうかを確認します。

おそらくサーバー/クライアントのキャッシュの問題だと思います。解決するには、 の下にあるすべてのクライアント キャッシュを更新します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% フォルダー (通常は ) 内の *.auc および *.kti ファイルを削除し、クライアントを再度開きC:\Users\[user]\AppData\Localます。

お使いの環境で、最近別のデータベースのコピーを復元しましたか?

編集: DBの復元を行ったことがわかったので、GLOBALGUID再利用された可能性が高く、キャッシュの問題を引き起こしている可能性があります. これがどのように/なぜ起こるかについての詳細は、こちらを参照してください

AOS を停止して、次の SQL コマンドを実行する必要があります。

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

バッチの実行にも問題がありますか? (多少関連していますが、主にこの質問に興味があります)

于 2014-12-15T17:33:19.753 に答える