[seasar-dotnet:1903] Re: 自動発行SQLのテーブル名にクォート

kubo [E-MAIL ADDRESS DELETED]
2011年 1月 13日 (木) 09:16:11 JST


久保(jflute)です。

なんか昔の記憶で、
Oracle の JDBCドライバが、とあるメソッドだけ
日本語を許さないというのがあるのを思い出しました。
(PKやFKは大丈夫なのに、なぜかUQやIndexだけ
日本語テーブルを受け付けない)

取り急ぎですが(本当に取り急ぎですが)、
dbflute-0.8.9.23-SNAPSHOT.zip
を使ってみて下さい。
Oracleのときだけ例外が発生したらリトライで
クォートして再実行するようにしています。
(ユニーク制約とインデックス情報ちゃんと取れるかな...!?)

http://dbflute.net.sandbox.seasar.org/ja/environment/newest.html#snapshot

> 0.8.9.15までは「WARN」ですが、0.8.9.16以降は「ERROR」となります。

こういった現象・問題が明確に上がってくるようにするために、
例外をつぶすのはやめました。まさに今回の件が合致しましたね。

> またquoteTableNameListについてですが、
> ログに出力されるSQLが変わるかどうか?という判断で問題ないでしょうか?
> 0.8.9.15にて試している現状では、
> ログ中のSQLをみるところ、テーブル名にダブルクォートはついておりません。

少なくとも CB の判断はそれでOKです。
S2Daoに任せているところ(insert, update など)も
基本的にそれでOKだと思います(が、多分というところで)。

ただ、そのまえに、DBMetaの TableSqlName や
ConditionQuery の getTableSqlName() の値が、
クォートされているかソース上で確認してみて下さい。
(あと、DaoインターフェースのBean属性の値)
これらがクォートされていなければ、そもそも設定の段階で
うまくいってないということになります。

#
# やはり、英語圏で作られたツールで日本語使うと、
# どの世界でもトラブル発生しやすいものですね...
#

2011/1/12 井上忠彦 <[E-MAIL ADDRESS DELETED]>:
> 久保様
>
> ご回答ありがとうございます。
>
> ご教授いただきましたquoteTableNameListにて
> 試してみようとしておりますが、現状うまくいっておらず、
> たびたび申し訳ございませんが、確認させていただけませんでしょうか。
> (見づらいメールとなり、申し訳ございません。)
>
> まず、DBFluteを0.8.9.9→0.8.9.22とアップグレードしたところ、
> jdbc.batがエラーとなってしまいました。
>
> --- ここから
> 2011-01-12 22:13:48,079 [main] INFO
> (TorqueJDBCTransformTask#generateXML():265) - $ [Table List]
> 2011-01-12 22:13:48,095 [main] INFO
> (TorqueJDBCTransformTask#processTable():296) - $ MY.TBLCONTROL(TABLE)
> 2011-01-12 22:13:48,516 [main] INFO
> (TorqueJDBCTransformTask#processTable():296) - $ MY.コントロール(TABLE)
> 2011-01-12 22:13:48,547 [main] ERROR
> (DfDBFluteTaskUtil#logException():156) - Look! Read the message below.
> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> Failed to execute DBFlute Task 'JDBC'.
>
> [Advice]
> Check the exception messages and the stack traces.
>
> [Database Product]
> Oracle Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
>
> [JDBC Driver]
> Oracle JDBC driver 11.1.0.7.0-Production for JDBC 11.1
> * * * * * * * * * */
> java.lang.IllegalStateException: java.sql.SQLException: コールに無効な引
> 数があります。
> --- ここまで
>
> アップグレード前のバージョン(0.8.9.9)でのdbflute.logの同様の箇所は次の
> とおりです。
>
> --- ここから
> 2011-01-12 22:12:28,628 [main] INFO
> (TorqueJDBCTransformTask#generateXML():273) - $ MY.TBLCONTROL(TABLE)
> 2011-01-12 22:12:40,453 [main] INFO
> (TorqueJDBCTransformTask#generateXML():273) - $ MY.コントロール(TABLE)
> 2011-01-12 22:12:40,484 [main] WARN
> (TorqueJDBCTransformTask#generateXML():369) - Failed to get unique
> column information! But continue...
> java.sql.SQLException: コールに無効な引数があります。
> --- ここまで
>
> 試しに他のバージョンでも試してみたところ、
> 0.8.9.15までは「WARN」ですが、0.8.9.16以降は「ERROR」となります。
> 初歩的なことかもしれませんが、何か情報ございましたら、
> ご教授いただけませんでしょうか?
>
> またquoteTableNameListについてですが、
> ログに出力されるSQLが変わるかどうか?という判断で問題ないでしょうか?
> 0.8.9.15にて試している現状では、
> ログ中のSQLをみるところ、テーブル名にダブルクォートはついておりません。
>
>
> 以上、よろしくお願いいたします。
>
> (11/01/12 (水) 22:42), kubo wrote:
>> 久保(jflute)です。
>>
>> 一応、報告です。
>> quoteTableNameList と quoteColumnNameList は、
>> ReplaceSchema の LoadData に対応していませんでしたが、
>> 次のバージョンでは対応されます(既に修正しました)。
>> dbflute-mysql-example に Example があります。
>>
>> 2011/1/12 kubo<[E-MAIL ADDRESS DELETED]>:
>>> 久保(jflute)です。
>>>
>>> 井上さん、おはようございます。
>>>
>>> こちらをご覧下さい。
>>> http://dbflute.sandbox.seasar.org/ja/environment/supported.html#unsupportedname
>>>
>>> どうにもならない状況であれば、こちらで
>>> 言及されているオプションを試してみて下さい。
>>>
>>> Java版のDBFluteでは、積極的サポートしていないと言いつつ、
>>> 実はテストもそれなりにされており、ほとんどの機能が動く状態です。
>>> しかしながら、DBFlute.NET(C#版)ではその限りではありません。
>>> 実際に動かしてもらわないとその精度はなんとも言えません。
>>> また、DBFlute.NETはS2Dao.NETに処理を委譲しているため、
>>> DBFluteの方で、EntityのBean属性にクォーテーションをしたとしても、
>>> S2Dao.NETでそれをうまく受け取ってくれるかどうかは不明です。
>>> (結局、とりあえず試してもらう以外にありません)
>>>
>>> また、そのオプションが 0.8.9.9 でサポートされていたかどうか、
>>> ちょっとパッとコメントできませんので、これも実際にお試し下さい。
>>> (カラム名の方は比較的最近なので、できないかもしれません)
>>> もし、アップグレード可能であればその方が確実です。
>>>
>>> #
>>> # 質問の背景が明確なので、コメントしやすくとても助かります。
>>> # すいませんがこの後、夜までメール見れないのでご了承下さい。
>>> #
>>>
>>> 2011/1/11 井上忠彦<[E-MAIL ADDRESS DELETED]>:
>>>> 井上と申します。
>>>>
>>>> 質問させてください。
>>>>
>>>> DBFluteにて自動発行されるSQLのテーブル名・カラム名全てに
>>>> ダブルクォートを付けることは可能でしょうか?
>>>>
>>>> 環境は次のとおりです。
>>>>
>>>> 開発言語:C#
>>>> 開発環境:VisualStudio2008
>>>> DB:Oracle 11.1.0.6
>>>> S2Container.net:1.3.17
>>>> DBFlute.net:0.8.9.9
>>>>
>>>>
>>>> そもそも問題としましては、次の通りとなります。
>>>>
>>>> 既に稼働済みのシステムのデータプロバイダーを
>>>> ODP.NETに変更するため調査・確認を行っております。
>>>>
>>>> テーブル名・カラム名に日本語を使用しており、
>>>> 環境によりエラーが発生します。
>>>>
>>>> 実行環境
>>>> OS:7、Vista
>>>> オラクルクライアント:11.1.0.6
>>>> →エラーとならない。
>>>> OS:XP
>>>> オラクルクライアント:11.1.0.6
>>>> →エラーとなる。
>>>>
>>>> エラーの内容は一定でないため、添付させていただきませんが、
>>>> まずは日本語テーブル名・カラム名の対応と思い、
>>>> 上記のとおり、質問をさせていただきました。
>>>>
>>>>
>>>> 以上、よろしくお願いいたします。
>>>>
>>>> 井上
>>>>
>>>> _______________________________________________
>>>> seasar-dotnet mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>
>>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>>
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内