Closed nozoe closed 1 year ago
貢献ありがとうございます。
ご連絡いただいた問題は1.3.34.0以前のバージョンでインポート時に発生する可能性のある問題です。発生したデータについては、データベースを直接編集して修正する必要がございます。下記の手順で修正していただきますようお願い致します。
--- 期限付きテーブルの場合 update Issues set Ver = (select max(b.Ver)+1 from Issues_history as b where b.IssueId=Issues.IssueId) where IssueId in ( select IssueId from Issues where SiteId=99999 and exists( select * from Issues_history where Issues_history.SiteId = Issues.SiteId and Issues_history.IssueId = Issues.IssueId and Issues_history.Ver = Issues.Ver ));
--- 記録テーブルの場合 update Results set Ver = (select max(b.Ver)+1 from Results_history as b where b.ResultId=Results.ResultId) where ResultId in ( select ResultId from Results where siteid=14393 and exists( select * from Results_history where Results_history.SiteId = Results.SiteId and Results_history.ResultId = Results.ResultId and Results_history.Ver = Results.Ver ));
2023/2/28 にCSVからインポートしたデータで、更新履歴を見ると同じバージョンの行が2行表示される事象が発生しています。 この状況だとデータのアップデートも出来ない状況です。
MSSQLでエラーになっている時間帯のSyslogsテーブルを確認すると、Results_history に対して重複したキーでレコードの追加を 行っているというエラーがでていました。
データを見ると、Results_history テーブルは になっており、Resultsテーブルは で、正常なデータのレコードの内容と比較すると本来であれば、Results とResults_history のVerカラムは、 同値で存在することは無いのでは無いかと思います。 処理的には現在のレコードをResults_history にコピー(Insert)して、Results側のVerカラムを+1しているのでは 無いかと想像しています。(ソースは見ていません) 既にResults_history にVerカラムの値が同値のレコードがあるために更新に失敗しているんだと。
この操作を実施していた頃のPleasanter のバージョンは、私の作業履歴を確認するとVer.1.3.30.1だと思います。 で、このバージョンから現在のバージョン(1.3.36.0)までの履歴を見ると、1.3.35.0 の変更履歴に
・インポート操作で競合が発生した場合にバージョン番号の重複が発生する問題を解消。
というのがありこれを踏んでしまったものだと思います。
で、前置きが長くなりましたがこの問題解消の対策としては、 Results該当するSiteIdをのVerのの値を+1するだけで良いのかどうかの確認です。 迂闊に修正して問題が出たら大変なので…
できれば、一括で修正出来るSQL分があればなお良いのですが…(^_^;)
よろしくお願いします。