[Seasar-user:4851] Re: DBFlute-0.1.06 リリース

kubo [E-MAIL ADDRESS DELETED]
2006年 10月 22日 (日) 15:47:33 JST


久保です。

> SQL SERVER 2005に繋いでみたのですが、
> 下記 ERRORとなってしまいます。
> 
> どこか設定が間違っていますか?

さっそくのご利用ありがとうございます。



> (TorqueJDBCTransformTask#execute():252) - JDBCToXMLSchema failed:
>                             java.lang.NumberFormatException: null
> at java.lang.Integer.parseInt(Integer.java:415)
> at java.lang.Integer.parseInt(Integer.java:497)
> at org.apache.torque.task.TorqueJDBCTransformTask
>    .getUniqueColumnNameList(TorqueJDBCTransformTask.java:492)

こちらでも現象再現できました。

どうやら、SQLServerのJDBC-Driverが、getIndexInfo()において、
tableIndexStatisticの時に、getString(8){ORDINAL_POSITION}でnullを
返しているようです。
(本来JDBCの仕様的にtableIndexStatisticの場合は 0 が帰らなければならない)

そのような戻りの場合は、warn-logを出力して続行するように修正します。
また、そもそもtableIndexStatisticのIndex情報は不要なので、
ここの処理以前のタイミングでtableIndexStatisticを無視するようにします。
(次回DBFlute-0.1.07にて反映致します。SVNは既に反映済みです。)



現状の対応に関しては、お使いになられているJDBC-DriverのClassですが、

A. com.microsoft.sqlserver.jdbc.SQLServerDriver

  ↓↓↓ ※Package名の「sqlserver」と「jdbc」と入れ替える

B. com.microsoft.jdbc.sqlserver.SQLServerDriver

のようにしてもらってよろしいでしょうか?
SQLServer2005のJDBC-Driverでは、従来の「A」から現行の「B」を
利用するように変更されています。
(URLも変わったのですが、見たところURLの指定形式は新しい方のようです)

すると、getString(8){ORDINAL_POSITION}がnullを返さなくなるようです。
久保が実務でSQLServer2005を利用していますが、こちらのでJDBC-Driverで
利用しています。tableIndexStatisticの余計な情報が取得されますが、
全体動作に影響は全く与えませんので、そのまま利用できるようになるかと
思います。

  (もし、それでもダメならDBFlute-0.1.07をすぐにReleaseしますので
   言って下さい。)



-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
kubo   <[E-MAIL ADDRESS DELETED]>
jflute <http://d.hatena.ne.jp/jflute>
株式会社ビルドシステム <http://www.buildsystem.co.jp>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/




Seasar-user メーリングリストの案内