ERFluteのcollateの出力について

50 views
Skip to first unread message

mokkouyou

unread,
Aug 10, 2021, 9:06:45 PM8/10/21
to DBFluteユーザの集い
ご無沙汰しています。mokkouyouです。

さて、ERflute/mysqlを利用していますが、1点だけ確認というか、
要望になるかもしれませんが、ERfluteの照合(COLLATE)の出力についてです。

①diagram設定で、character set(文字セット)、collate(照合)を指定した場合、
create tableにはcharcter setのみ出力

②table単位で、character set(文字セット)、collate(照合)を指定した場合、
create tableにはcharcter set とcollate 両方出力

となります。

以下の様に、database単位でcollate設定しても、
create tableにcharacter setのみがある場合、
collateはdatabase単位の設定とならないという悲しい挙動があり、

DDLで明示したい場合、
全般の設定として①の方でも両方出力されると助かるのですが、
何か全般の設定としてCREATE TABLEにcollate指定を出力する方法はないでしょうか?

#default_collation_for_utf8mb4で環境設定してデフォルトを設定するというのもいいのですが、RDSのmysqlだとこの設定が変な挙動するんですよね。(8.0からのset persistだからかな?)

mokkouyou

unread,
Aug 11, 2021, 12:27:34 AM8/11/21
to DBFluteユーザの集い
ちなみにではありますが、

org.dbflute.erflute.db.impl.mysql.MySQLDDLCreator.buildTableOptionPart(ERTable)

にて、共通単位の「照合」を取得して、未指定なら、
テーブル単位の「文字セット」を設定のような処理になってるのが原因かなとは思っているのですが、
意図があるのかどうか、このあたりの共通単位とテーブル単位のプロパティ関連までは追っていないので、何とも・・・です。



2021年8月11日水曜日 10:06:45 UTC+9 mokkouyou:

kubo

unread,
Aug 11, 2021, 3:16:53 AM8/11/21
to DBFluteユーザの集い
jfluteです、mokkouyouさん、お久しぶりです(^^。
ERFlute使って頂きありがとうございますー。


> テーブル単位の「文字セット」を設定のような処理になってるのが原因かなとは思っているのですが、
そして、コードまで読んで頂き、ありがとうございます!
これですね...

String characterSet = tableProperties.getCharacterSet();
if (Check.isEmpty(characterSet)) {
    characterSet = commonTableProperties.getCharacterSet();
}
final String collation = tableProperties.getCollation();
if (Check.isEmpty(collation)) {
    characterSet = commonTableProperties.getCharacterSet(); // ★ほへ?
}

これは。。。きっと間違いでしょうね。
でないとcommonのCollateの設定がMySQLだと全く使われないってことになりますもんね。
ERMaster時代からずっとあるんだと思います。

ちょっと後で直してみます。

kubo

unread,
Aug 11, 2021, 3:55:07 AM8/11/21
to DBFluteユーザの集い
jfluteです

取り急ぎ、直してみました。

以下のjarファイルで試して頂けないでしょうか?

mokkouyou

unread,
Aug 11, 2021, 8:07:36 PM8/11/21
to dbf...@googlegroups.com
jfluteさん

対応ありがとうございました。

exportの結果が期待通りになること確認出来ました。
その他動作もざっくりではありますが問題なさそうです。

#ERMaster含めて便利に使わせていただいております!

以上よろしくお願いいたします


2021年8月11日(水) 16:55 kubo <dbf...@gmail.com>:
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには dbflute+u...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/dbflute/CAALfU-A7VsmLunkpWQC%2Btp2PzVp7YeG6Qz7h_6tz%2BXwoeJpyLw%40mail.gmail.com にアクセスしてください。



--
mokkouyou
mokk...@gmail.com

kubo

unread,
Aug 11, 2021, 10:19:16 PM8/11/21
to DBFluteユーザの集い
jfluteです。mokkouyouさん、確認ありがとうございます!
そのjarファイルを0.5.9リリースにしちゃいますので、そのままお使いください。
フィードバックありがとうございましたー。

Reply all
Reply to author
Forward
0 new messages