[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 メーリングリストの案内