修復コマンド

内部データを修復するためのコマンドです。背景・不具合事象を確認し、 不具合事象の解消が必要な場合にのみ 下記コマンドを実行してください。なお、異なるタイムゾーンのユーザがいる環境において、このコマンドを実行した場合、登録された時間により日付が変わる場合があるので、ご注意ください。このコマンドは、Ver.3.6.7 以降のバージョンで使用可能です。

repair dateformat

背景

Ver.3.2.0 より前のバージョンでは、日付選択部品に指定した日付を、登録者とは異なるタイムゾーンに属するユーザが閲覧者すると、登録時に指定した日付と異なる日付で表示される場合がありました。この事象は、下記条件を全て満たした場合に発生しており、Ver.3.2.0 にて、日付選択部品の表示形式フォーマットが「年月」または「年月日」の場合、時刻のデータを登録せず、閲覧時にもタイムゾーン変換を行わないように動作改善をしました。時刻を含む表示形式の場合の動作は従来どおり変更していません。

条件

  • 日付選択部品の表示形式が「年月」または「年月日」である
  • 文書登録者のタイムゾーンと文書閲覧者のタイムゾーンが異なる

Ver.3.2.0 での日付選択部品の動作改善により、既存の登録データに関して、文書更新時に新しいデータ形式に変換して保存するようになったことで、以下の不具合事象が発生することが分かりました。

不具合事象

Ver.3.2.0 より前のバージョンで、日付選択部品(表示フォーマットに「年月」または「年月日」を指定)を含むバインダを運用していた環境を、Ver.3.2.0 以降にバージョンアップ後、古いバージョンで登録された文書を更新すると、文書一覧のソート順に日付選択部品が指定されていると、正しい順序でソートされなくなります(画面例を参照)。

不具合発生条件

  • 日付選択部品の表示形式が「年月」または「年月日」である
  • 文書一覧のソート順に日付選択部品を指定している
  • Ver.3.2.0 より前のバージョンで登録した文書を新しいバージョンで更新する

画面例(不具合発生時)

画面例(不具合発生時)

上記の不具合事象を解消する必要がある場合にのみ、下記コマンドを実行してください。

コマンドの文法

SmartDB Ver.3.2.0 より前に登録された日付選択部品のデータ(旧データ)が存在するかチェックします。
すべてのバインダのデータをチェックします。

repair dateformat check binder all

指定したバインダID のデータをチェックします。

repair dateformat check binder <バインダID>

指定した複数のバインダID のデータをチェックします。

repair dateformat check binder <バインダID>,…

指定した範囲内のすべてのバインダ(両端を含む)のデータをチェックします。

repair dateformat check binder <バインダID>-<バインダID>

SmartDB Ver.3.2.0 より前に登録された日付選択部品のデータ(旧データ)を修復します。
すべてのバインダのデータを修復します。

repair dateformat exec binder all

指定したバインダID、[日付部品ID]のデータをチェックします。

repair dateformat exec binder <バインダID> [item <日付部品ID>,…]

指定した複数のバインダID のデータをチェックします。

repair dateformat exec binder <バインダID>,…

指定した範囲内のすべてのバインダ(両端を含む)のデータをチェックします。

repair dateformat exec binder <バインダID>-<バインダID>

処理内容

指定したバインダID、部品ID を対象に、日付選択部品のデータをチェック・修復します。下記チェック・修復の条件を全て満たしたデータが対象となり、修復前のデータはバックアップファイルとして保存されます。

【チェック・修復の条件】

  • 日付選択部品の表示形式が「年月」および「年月日」である
  • 日付選択部品は、リスト型部品に配置されていない
  • 日付選択部品のデータが旧データ形式「yyyy-MM-dd hh:mm:ss」である
  • 文書データは、最新バージョンである
  • 文書データは、論理削除されていない

【制限事項】

  • リスト型部品に配置された日付選択部品は、データ修復の対象外です
  • 履歴データは、データ修復の対象外です
  • 論理削除されたデータは、データ修復の対象外です(※ゴミ箱から文書を戻すと、旧データ形式が混在します)
  • 異なるタイムゾーンのユーザが登録したデータは、登録された時間により日付が変わる場合があります。

【データ変換方式】

旧データ形式から新データ形式への変換方法は、下表を参照してください。変換を行う際、旧データの時刻(hh)部分の値により年月日を決定します。時刻の値により、日付が変わる場合があります。

時刻が12 より大きい(hh > 12): 旧データの「yyyy-MM-dd」+1 日
時刻が12 以下(hh <= 12) : 旧データの「yyyy-MM-dd」

旧データ形式 新データ形式
yyyy-MM-dd hh:mm:dd yyyy-MM-dd

修復例)

表示
フォーマット
旧データ 新データ
年月日 2018-07-13 23:00:00 2018-07-14
2018-07-13 15:00:00 2018-07-14
2018-07-13 12:00:00 2018-07-13
2018-07-13 11:00:00 2018-07-13
2018-07-13 00:00:00 2018-07-13
年月 2018-06-30 23:00:00 2018-07-01
2018-06-30 15:00:00 2018-07-01
2018-07-01 12:00:00 2018-07-01
2018-07-01 11:00:00 2018-07-01
2018-07-01 00:00:00 2018-07-01

【修復前データのバックアップ】

コマンドを実行すると、旧データをバックアップします。バックアップ/修復の処理は、1000 件毎に実行しますが、バックアップファイルへの出力は、コマンドの実行毎にまとめて行われます。

バックアップファイル: repair_<バインダID>_<タイムスタンプ>.bak
出力ディレクトリ : SmartDB Tool の起動ディレクトリ
データフォーマット : <部品ID>,<文書ID>,<旧データ>

実行例

repair dateformat check binder コマンドの実行時には以下の内容が表示されます。

> repair dateformat check binder 10017,10025
2 個対象バインダが見つかりました。
-----------------------------
[10017] お仕事ナビ :
部品名 旧データ件数
[10011] 発生日 1321
[10028] 対応日 691
[10156] 発生日 957
[10396] 設計期限 4
[10398] コーディング期限 3
[10400] 対応方針の期限 11
-----------------------------------------------------
[10025]日付テスト :
部品名 旧データ件数
[10002] YMD 1

repair dateformat check binder コマンドの実行時には以下の内容が表示されます。

> repair dateformat exec binder 10017
1 個対象バインダが見つかりました。
-----------------------------
[10017] お仕事ナビ :
部品名 旧データ件数
[10011] 発生日 1321
[10028] 対応日 691
[10156] 発生日 957
[10396] 設計期限 4
[10398] コーディング期限 3
[10400] 対応方針の期限 11
上記の部品に対して旧データを修復しますか(Yes/No):

y
begin to repair date data
backup file for old data : repair_10017_20180727151200.bak
-----------------------------
begin to update item: [10011] 発生日
found 1321 records
1000/1321 records repaired
1321/1321 records repaired
finished updating item: [10011] 発生日
-----------------------------
begin to update item: [10028] 対応日
found 691 records
691/691 records repaired
finished updating item: [10028] 対応日
-----------------------------
begin to update item: [10156] 発生日
found 957 records
957/957 records repaired
finished updating item: [10156] 発生日
-----------------------------
begin to update item: [10396] 設計期限
found 4 records
4/4 records repaired
finished updating item: [10396] 設計期限
-----------------------------
begin to update item: [10398] コーディング期限
found 3 records
3/3 records repaired
finished updating item: [10398] コーディング期限
-----------------------------
begin to update item: [10400] 対応方針の期限
found 11 records
11/11 records repaired
finished updating item: [10400] 対応方針の期限
-------------------------------
データを修復完了しました。