[seasar-dotnet:1731] Re: Oracle でORA-00972: 識別子が長すぎます。の対処方法について

kubo [E-MAIL ADDRESS DELETED]
2010年 6月 15日 (火) 01:41:32 JST


久保(jflute)です。

こんにちは、ikutirinさん
この件は、まさしく
http://dbflute.net.sandbox.seasar.org/ja/introduction/index.html#notimplfunc
の
"Oracleのselect句の30文字問題の回避"
に相当するものです(Java版では既にサポート済み)。
単純に機能がないのはまだしも、この手の設計に
影響するものは、やはりしっかりやっておかない
といけないですね。
DBFlute.NET-0.8.9.18-00-SNAPSHOT をお試し下さい。
http://dbflute.net.sandbox.seasar.org/ja/environment/newest.html#snapshot

dbflute-asp.net-example (ASP.NET + DBFlute.NET + Oracle)
の VendorNameTest で長いカラム名を試して動作しています。
https://www.seasar.org/svn/sandbox/dbflute.net/trunk/dfnet-asp.net-example/source/DfExampleTest/DBFlute/Various/VendorNameTest.cs

2010/6/14 ikutirin <[E-MAIL ADDRESS DELETED]>:
> 追記および修正です。
>
> 現象が起きているDBFlute.NETのバージョンは、
> 0.8.9.17の間違いです。失礼しました。
>
> また、同じことをHnossさんが分かりやすく書いてくれていました。
> http://d.hatena.ne.jp/Hnoss/20081120/1227192898
>
> Hnossさんが言うように、Oracleを利用していて
> ORA-00972: 識別子が長すぎます。が出た場合は
> カラム名を見直さなければいけない。
> あらかじめORA-00972が発生しないように、カラム名は20バイト程度で抑えておく。
>
> と、いうのが現時点でのDBFlute利用時の制限になってしまいますか。。。
> #そこをなんとか。。。
>
>
> ikutirin <[E-MAIL ADDRESS DELETED]> wrote:
>
>> DBFlute.NETコミッター様へ
>> ikutirinと申します。よろしくお願いします。
>>
>> DBFlute.NET  0.8.9.12で発行されたSQLが
>> ORA-00972: 識別子が長すぎます。
>> となります。
>>
>> 発生原因はテーブル名、カラム名が長すぎるという単純なものなのですが、
>> DBFlute側で発生しないように対応してもらえないでしょうか。
>>
>> ■原因----
>> 25バイトのテーブル名があります。
>> そのテーブル名を「12345678901234567890TABLE」とし、
>> 「12345678901234567890TABLE_ID」という主キーがあるとします。
>>
>> ConditionBean#SetupSelectXXX()だけですと、列別名は
>> 「12345678901234567890TABLE_ID_0」というような名前になり、
>> 30バイトを超えることはないのですが、
>> ConditionBean#SetupSelectXXX().WithXXXX()とした場合は、
>> 「12345678901234567890TABLE_ID_0_3」となり、
>> 30バイトを超えてしまいます。
>> #26バイトのテーブル名の場合は、ConditionBean#SetupSelectXXX()で
>> #カラム別名が30バイトを超えます。
>> ----
>>
>> できることならテーブル名、カラム名の変更をしたくないので、
>> Oracleの場合で、かつ別名が30バイトを超えるようであれば、
>> 先頭何文字かを採用するなどし、DBFlute側で対応できないでしょうか。
>>
>> よろしくお願いします。
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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