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

井上忠彦 [E-MAIL ADDRESS DELETED]
2011年 1月 13日 (木) 12:13:51 JST


久保様

早急なご回答ありがとうございます。

> dbflute-0.8.9.23-SNAPSHOT.zip
こちらで実行したところ、エラーは回避されました。
WARNのログ出力となり、schema.xmlが出力されることが確認できました。
generate.batもエラーなく動作しました。

> (ユニーク制約とインデックス情報ちゃんと取れるかな...!?)
申し訳ございませんが、現状ここまでの確認はできておりません。


クォートの件、0.8.9.23-SNAPSHOTにてあらためて試してみました。
ご教授いただいたとおり、まずはソース上での確認です。

テーブル名がアルファベットの場合、
 TableSqlName →○:「\"〜\"」となっている。
 getTableSqlName() →○:「\"〜\"」となっている。

テーブル名が日本語の場合、
 TableSqlName →×
 getTableSqlName() →×

> (あと、DaoインターフェースのBean属性の値)
こちらは、BsDao以下にあるクラスでよろしいのでしょうか?
見たところここのクラスには文字列の記載がありませんでした。

littleAdjustmentMap.dfpropの設定は次のとおりとしています。
    ; quoteTableNameList = list:{コントロール; TblControl}
    ; quoteColumnNameList = list:{キー; 名称; ColKey; ColName}


あらためてご相談させてください。
上記の方法でうまくいったとしましても、
テーブルが300近くあり、まだ機能変更・追加も頻繁に行われている状況で、
現実的に難しいと考えています。
お手数ですが、他に何かよいアイデアあればご教授いただけませんでしょうか?


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

(11/01/13 (木) 9:16), kubo wrote:
> 久保(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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> 
> 



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