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

ikutirin [E-MAIL ADDRESS DELETED]
2010年 6月 15日 (火) 11:13:13 JST


ikutirinです。
久保(jflute)さん、早速の対応ありがとうございました。
こちらでも動作を確認し、問題ありませんでした。

kubo <[E-MAIL ADDRESS DELETED]> wrote:

> 久保(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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



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