[TUIGWAA-95] サイトバックアップ時に、カラムを削除したテーブルをバックアップすると正しくリストアできない Created: 26/Sep/06  Updated: 18/Oct/06  Resolved: 18/Oct/06

Status: Resolved
Project: Tuigwaa
Component/s: database
Affects Version/s: 0.9.1
Fix Version/s: 1.0.1

Type: Bug Priority: Major
Reporter: someda Assignee: someda
Resolution: Fixed Votes: 0
Labels: None


 Description   

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

原因は

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

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



 Comments   
Comment by someda [ 18/Oct/06 ]

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

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

  • SetAttribute (実体は含まない関連データのリスト)は無視し、
  • DateAttribute の場合は、年・月・日のカラムを追加
Generated at Sun Jan 26 11:17:38 JST 2020 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.