これは質問ではなく報告です。
以下のリンク先で実施した質問の続編のようなものです。
↓
BASEのテーブル作成時のテキスト固定CHARにおける疑問
別の件名に変更してアップたほうが後々、私のような初心者に役立つと判断しました。
私自身の忘備録も兼ねています。
###LIBRE OFFICE の BASE 上で、
###HSQLDB側 から FIREBIRD側 にいちどでも移動した テーブルは、
###HSQLDB側 に戻せなくなります。
これが LIBRE 側によるバグなのか、FIREBIRD 側によるバグなのか、
初心者の私にはわかりませんが、いずれにしてもバグのようです。
###可能なテーブル移動は以下の2パターンのみです。
HSQLDB側 ←→ HSQLDB側 双方向で可能
HSQLDB側 → FIREBIRD側 片道通行
HSQLDB側 のテーブル内 に `CHAR` が設定されたフィールドがひとつでもあると、
FIREBIRD側 に移動したとたん、末尾に予定外の大量の空白が勝手に挿入されてしまいます。
これが理由で、HSQLDB側 には(そのままでは)二度と戻せなくなってしまいます。
HSQLDB から FIREBIRD に移行しようとして試行錯誤している方は気を付けてください。
以下のような警告が出ます。
SQL ステータス: 22001
エラーコード: -124
Value too long in statement
himajin100000 さんのコメント引用
UTF-8 では 1文字あたり最大4バイトとると考えて、
4×3bytes =12bytesになるまで補充されているとの情報あり。
FIREBIRD 側が、標準から逸脱した挙動しているとの見解あり。
あるいは FIREBIRD 用の SDBCドライバが VARCHAR として解釈すべきなのか。未検証。
###追加情報1
うっかり FIREBIRD にしてしまうと、以下の行為を FIREBIRD 上でするのは危険です。
もしやると、テーブル内の全てのデータを FIREBIRD が削除してしまいます。
CHARテーブル内の文字数が、
FIREBIRD による半角空白の追加によって変化してしまったのを戻したくて、
フィールドの設定を CHAR から VARCHAR に変更する。
これを回避する方法はひとつしかありません。
FIREBIRD にする前に、HSQLDB 側であらかじめ、CHAR を全て VARCHAR にしておく。
この時、私のような初心者が躓きやすいのは「HSQLDB 側のリレーションテーブル」です。
ここで関連付けが設定されているままでフィールドの属性を変更すると、データが削除されます。
作業を開始する前に、HSQLDB 側のリレーションを全て外してからおこなうこと。
###追加情報2
うっかり FIREBIRD にしてしまうと、
テーブル内の要素で、FIREBIRD が削除してしまうものは他にもあります。
①リブレのテーブル内の編集画面に記入していた各フィールドごとの「概要」
②各フィールドに設定していた「標準値」
この他にもあるかもしれません。
上記の「概要」を忘備録的に利用していた人は気を付けてください。
「標準値」が削除されてしまうので、
「フォームのデータ登録画面」に「標準値」が出現しなくなります。
「登録ミスが発生する可能性」があります。
「登録ミスを避ける」には、FIREBIRD側で再度「標準値を設定し直す」しかありません。