2021年07月04日

DBeaver 21.1.1+MariaDBで、日本語カラム名に設定された外部制約が表示されない

[2024/6/18追記 この不具合はずっと前に解消済みです。昔こんな不具合があったんだよ、というメモとしてお読みください。]

DBeaver、ちょー便利。

ただ日本語テーブル・日本語カラム名を持つ MariaDB なDBを開くと、DDLでは確かに定義されている外部制約がまるっと表示されないという状況が以前からありまして。H2 Databaseでは普通に表示されるのになーと思いながら使ってました。取りあえず表示だけなので。

ですが最近になって、MariaDB なDBについてDBeaverのER図を使いたいとなった時にどうしてもこの「外部制約がまるっと表示されない」という点が障害になってしまって。なんとかならんもんかといろいろ試したわけですよ。

結論は、日本語カラム名のときに外部制約が表示されない(DBeaverで、文字化けした日本語カラム名を外部制約先として探しに行こうとしてエラーになっている)、というものでした。
H2 Databaseでは普通に表示されるしER図も問題ないので、MariaDBを(もしかしたらMySQLも)扱う時のみの問題のようです。
日本語カラム名を使うという仕様なので困るー。

結局どうしたかと申しますと。MariaDBからDDL吐いて、SQLを修正してH2 Databaseに取り込みましたですよ。ER図を出すためだけに。

そのうち修正されるとは思いますが、この不具合を見つけて少なくとも年単位でそのままですので、issuesに登録しないと下手したらずっとこのままと言う可能性も。とはいえGitHubアカウント作らないとissuesに登録できない、というのも面倒だのう。
続きを読む
posted by Μεω. at 22:31| Comment(0) | TrackBack(0) | 日記

MyBatis Generator で日本語テーブル名・カラム名を扱う

要点のみ簡単に。
  • eclipse pluginにあるMyBatis Generator で日本語テーブル名・カラム名を扱うことは可能。
  • table要素のdomainObjectName属性とか、columnOverride要素とか使う。
  • このとき、generatorConfig のxmlファイルの文字コードを「MyBatis Generatorを動かす環境のデフォルトの文字コード」とするのがミソ。xml先頭のencoding指定は無視される。xmlだからutf-8とかにしたくなるのだけど、例えば日本語Windows環境でそうしてしまうと、MyBatis Generatorは文字化けした日本語テーブル名・カラム名を探しに行ってしまう。日本語Windows環境でMyBatis Generatorを使って日本語テーブル名・カラム名を扱いたいなら、generatorConfig のxmlファイルの文字コードはMS932とかにしないと駄目。
…単純にxmlのencoding指定が無視されている、ということに気づくまで丸一日かかりましたよ。

ただ、扱うことは出来るしdomainObjectName属性とかcolumnOverride要素とかで日本語を適切にマップすることも出来るのだけと、素のMyBatis Generatorで自動生成された結果からは、マップ後のクラス名やプロパティ名からマップ前の名前を拾うことができません。自動生成されたコードのJavadocコメントにはマップ前の名前が入っているので、Custom Pluginを作れば対応は可能かと思います。
posted by Μεω. at 22:01| Comment(0) | TrackBack(0) | 役に立つかな?