LastaFluteでの問い合わせ

29 views
Skip to first unread message

Masanobu Shimura

unread,
Aug 21, 2022, 7:52:30 AM8/21/22
to dbf...@googlegroups.com
志村です。
お世話になっています。

mysqlでAuroraのバージョンアップで問題が起きて、とりあえず解決は
したのですが、問い合わせです。

例えば sys_tableのSysTableDbm.javaには下記定義があります。

protected final String _tableDbName = "sys_table";
protected final String _tableDispName = "SYS_TABLE";
protected final String _tablePropertyName = "sysTable";
protected final TableSqlName _tableSqlName = new TableSqlName("SYS_TABLE", _tableDbName);
このTableSqlNameの大文字がSQL作成で使われるみたいです。

そのため table自体は小文字なのでエラーになってしまいました。

この TableSqlNameを小文字にして、 TableDbNameに合わせることはできませんか。

よろしくお願いします。

志村


mokkouyou

unread,
Aug 21, 2022, 8:32:50 AM8/21/22
to dbf...@googlegroups.com
mokkouyouです。

mysqlのrds利用ですが、大文字小文字区別させない運用しています。
2度ほどメジャーバージョンアップさせましたが問題はなかったです。

もしメジャーアップデートで出た問題なのであればパラメータグループでその設定漏れていたりしないでしょうか?その場合区別ありがデフォルトかもしれません。私は移行時にはだいぶ気をつけました。

環境外でdbflute関連でいいますと、

このあたりの内容と、プロパティでどうにかならないでしょうか?SQLのテーブル名を大文字にするオプションがあるようです。



2022年8月21日(日) 20:52 Masanobu Shimura <mikes...@gmail.com>:
--
このメールは Google グループのグループ「DBFluteユーザの集い」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには dbflute+u...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/dbflute/CAB1hYpZGxbG8v-D1w8k2UKhZasAeN-KwGHRAbg%3Ds3W%2B1mMb_Dw%40mail.gmail.com にアクセスしてください。

Masanobu Shimura

unread,
Aug 21, 2022, 9:08:32 AM8/21/22
to dbf...@googlegroups.com
mokkouyouさま

早速のアドバイスありがとうございました。

今回はパラメーターグループの設定で
大丈夫でした。

ただ自動生成されるSqlを小文字に出来ないかという問い合わせです。

志村



2022年8月21日(日) 21:32 mokkouyou <mokk...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/dbflute/CADCdYfBjyEwMxqD37xw0OnvGN2sZ6KisXUKKixCE6_N%3DiU6e1A%40mail.gmail.com にアクセスしてください。

kubo

unread,
Aug 21, 2022, 10:33:22 AM8/21/22
to DBFluteユーザの集い
jfluteです。志村さん、こんばんは。

ひとまず、SQLの実行環境に関しては、
mokkouyouさんの情報の通りlower_case_table_namesを1にすることで、
SQL上が大文字だろうが小文字だろうが実行することができるようになります。

身の回りの現場ではほぼ必ずこちらを設定するようにして運用しています。


ただ自動生成されるSqlを小文字に出来ないかという問い合わせです。

DBFluteのクラスを自動生成する際に接続する(開発環境の)MySQLにおいても、
lower_case_table_names=1を設定しておけば、
(デフォルトでは)tableDbNameもtableSqlNameも小文字で生成されます。

MySQLが内部的に小文字で管理するので、メタデータも小文字になります。
開発環境も本番と同じ設定で統一しておくと良いです。


ただ、志村さんの最初の投稿のコードを見ると、
tableDbNameが小文字で、tableSqlNameが大文字になっています。

開発環境のlower_case_table_namesが設定されているか、
もしくは、DDLのcreate tableでテーブル名が小文字になっているか、
いずれにせよ、tableSqlNameだけ大文字になっているということは、
littleAdjustmentMap.dfpropのisTableSqlNameUpperCaseがtrueになってないでしょうか?

// littleAdjustmentMap - isTableSqlNameUpperCase

LastaFluteのExampleでは、lower_case_table_names=1を前提に、
isTableDispNameUpperCaseやisTableSqlNameUpperCaseがtrueに設定されています。

つまり、lower_case_table_namesによってMySQL内部では小文字管理になるけど、
ドキュメント上やSQL上の業務なテーブル名は大文字にするということですね。
SQLが大文字であってもlower_case_table_namesで吸収してくれるので実行も問題ないと。

この辺は、文化や好みによって、大文字にしたい、小文字のままでいい、あると思いますので、
志村さんの現場に合わせて調整してもらえればと思います。


まあ、すでに動いてるシステムで、Aurora側のアップグレードによる設定だけの問題なのであれば、
(元々、開発環境でも本番でもlower_case_table_names=1を想定していたのであれば)
プログラムの方はそのまま (DispNameとSqlNameは大文字) で良いのではないかと思います。



Reply all
Reply to author
Forward
0 new messages