Uploaded image for project: 'Tuigwaa'
  1. Tuigwaa
  2. TUIGWAA-95

サイトバックアップ時に、カラムを削除したテーブルをバックアップすると正しくリストアできない

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.1
    • Fix Version/s: 1.0.1
    • Component/s: database
    • Labels:
      None

      Description

      サイトのバックアップ時に、カラム削除したテーブルがあると、そのテーブルのデータを正しくリストアすることが出来ない。
      特に、これは別サイト間で tgwar を移すときに発生する。

      原因は

      • Tuigwaa 上でのカラム削除はTgwEntity 情報からは、そのカラム情報は削除されるが、
        実テーブル上のカラム削除はせず、カラムは残ったままになる。
      • サイトバックアップ機能でのバックアップは、ローレベルの (DatabaseMetadata) からテーブル名を取得し、SELECT * をすることにより、CSV を生成している。
      • サイトアップロードでは、model.ecore の情報から新たにテーブルが作成されるため、論理削除されたカラムは、新しいテーブルには存在しないが、CSVファイルには、元のサイトで削除されたカラム分のデータが存在するため、insert 文の発行時に不整合が起きる

      バックアップ時に、SELECT * で CSV を作成するのではなく、適切なカラム情報を持ってバックアップすることにより解決すると思われる。

        Activity

        Hide
        someda someda added a comment -

        EntityUtils に getColumns メソッドを追加し、TgwEntity に含まれる実カラムを取得することにより、
        バックアップのクエリを生成する。

        この getColumns メソッド内では、以下の処理を追加

        • SetAttribute (実体は含まない関連データのリスト)は無視し、
        • DateAttribute の場合は、年・月・日のカラムを追加
        Show
        someda someda added a comment - EntityUtils に getColumns メソッドを追加し、TgwEntity に含まれる実カラムを取得することにより、 バックアップのクエリを生成する。 この getColumns メソッド内では、以下の処理を追加 SetAttribute (実体は含まない関連データのリスト)は無視し、 DateAttribute の場合は、年・月・日のカラムを追加

          People

          • Assignee:
            someda someda
            Reporter:
            someda someda
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development