[Seasar-user:1574] Re: 不完全なSELECT文が生成される

Hideaki Maekawa maekawa
2005年 3月 8日 (火) 14:16:11 JST


前川です

ちょっと話が横道にそれますが…

Linux(というかケースCase Sentibなプラットホーム)上のMySQLで、大文字と小
文字を混ぜたテーブル名(というか全ての識別名)を使用するのは、Javaを使う限
りやめたほうが無難です。

というのもJDBCであるConnector/Jが、ろくな情報を返してくれないからです。
DatabaseMetaData実装のソースをご覧になればわかると思いますが、この辺の情
報を直打ちでfalseとか返しています。

#おそらくDBMS自身がこの辺の情報を持っていないのでは。

Seasarで関係のあるDatabaseMetaData#supportsMixedCaseIdentifiers()もfalse
オンリーです。にもかかわらずLinux上のMySQLは、Case Sentibな動作をします。

#MySQLの設定にCaseを無視するオプションがあればいいのですが。

------
> 伊藤です。
> 
> 
> Tue, 08 Mar 2005 13:07:58 +0900
> Yasuo Higa <[E-MAIL ADDRESS DELETED]> wrote:
> 
> > これだけの情報じゃ良く分からないんですが、プライマリーキーやカラムの情報が
> > JDBCのメタデータから取得できてないんじゃないかと思います。
> > framework.util.DatabaseMetaDataUtilのgetPrimaryKeySet,getColumnSetに
> > ブレークポイントを当てて、動作を見るとその様子が確認できます。
> 
> 確認してみました。実はいろんなRDBMSを試しているうちに正直、再現性がわか
> らなくなっていたのですが少し整理がついた気がします。
> 
> 例えば、Bean名が Hogehoge だったとします。
> 
> このときgetColumnSetの引数tableNameにはHogehogeが入ってきますが、
> convertIdentifierを通ると、tableNameはhogehogeになっています(つまり、先
> 頭文字が小文字)。
> しかし、生成されるSELECT文は
> 
>   SELEC FROM Hogehoge
>              ~大文字
> 
> です。私が準備しているテーブル名は、Hogehogeです。
> MySQLは、テーブル名の大文字小文字を区別するので、hogehogeでメタデータは
> 取得できなかったということになるのでしょうか?(すいませんソースを追いき
> れません)
> 
> テーブル名をhogehogeにすると、今度は生成されたSELECT文が通らなくなるよう
> なので、結局MySQLではSELECT文の自動生成は使えないような気がするのですが、
> どうなのでしょうか?
> 
> 以上よろしくお願いいたします。
> 
> 
> -- 
> Asuka Ito <[E-MAIL ADDRESS DELETED]>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user

--
株式会社フリーダム システム開発部
前川英昭 <[E-MAIL ADDRESS DELETED]>
0x2ED8CFD9 : 8E27 33DD 3480 C83A 15AD EB27 DC37 1DBE 2ED8 CFD9






Seasar-user メーリングリストの案内