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

ikutirin [E-MAIL ADDRESS DELETED]
2010年 6月 14日 (月) 22:27:26 JST


追記および修正です。

現象が起きている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 メーリングリストの案内