[前][次][番号順一覧][スレッド一覧]

mysql:12213

From: Tetsuro IKEDA <Tetsuro IKEDA <ikdttr@xxxxxxxxxx>>
Date: Tue, 4 Oct 2005 14:22:53 -0700
Subject: [mysql 12213] Re: 皆さんの使っているJDBCドライバのバージョン

池田です。

Connector/Jにおけるフィールド値 "0000-00-00 00:00:00"の取り扱いですが、
調べていたらどうも既にドキュメントに結論のようなものが書かれておりました。

http://dev.mysql.com/doc/mysql/en/cj-upgrading.html#cj-upgrading-3-0-to-3-1

・JDBC仕様/SQL標準により忠実なのはSQLExceptionをスローする挙動
・ver3.1.4から実装を変更した
・現在はオプションを指定することで挙動を選ぶことができる

プロパティ名:zeroDateTimeBehavior
値の候補:exception ・・・SQLExceptionをスローする(デフォルト)
値の候補:convertToNull ・・・nullを返す(ver3.0系と同じ動き)
値の候補:round ・・・"0001-01-01 00:00:00"を返す

とのことです。既にドキュメントにもこう書かれてしまっていますので、
これを変更するのはちょっと難しいかなと思います・・・。

この話だけで考えれば、データソース設定なりの部分で
渡す接続プロパティを1つ追加(zeroDateTimeBehavior=convertToNull)
するだけということにはなりますが。

他にも同URLにver3.0系からver3.1系へアップグレードする際の注意点のようなものが
列挙されております。よろしければそちらもご参照ください。

05/10/04 に NAGASAWA Teruo<tech-ml@xxxxxxxxxx> さんは書きました:
> 長沢です。お世話になっております。
>
> |> たとえば3.1から値が0の時に例外がスローされるようになっていますよね?
> |> そのような例外がスローされたので、ドライバのソースを読んでみると、
> |> オプションのような物で変更可能になっていましたが、
> |> そのオプションを変更するようなものがどうも無さそうな感じでした。
>
> やっと再現できました。mysql-connector-java-3.1.10です。
> フィールドの値が'0000-00-00 00:00:00'を取得しようとした時に発生しました。
>
> Caused by: java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 8 to TIMESTAMP.
>         at com.mysql.jdbc.ResultSet.getTimestampFromString(ResultSet.java:5639)
>         at com.mysql.jdbc.ResultSet.getTimestampInternal(ResultSet.java:5667)
>         at com.mysql.jdbc.ResultSet.getTimestamp(ResultSet.java:5320)
>         at com.mysql.jdbc.ResultSet.getObject(ResultSet.java:4433)
>
> まぁ、、、0000-00-00の状態はjava.util.Calendarでは表現できませんから、
> スローされるのもわかるんですが、3.0では問題なかったんですよね。
>
> 僕の場合はテーブル定義にnot nullを多用するので、新規案件ならともかく、
> すでに稼働中のシステムではバージョンアップは断念せざるを得ない状態です。
> # オプションで指定できるのかもしれませんが、他の隠れた問題が怖い。。。
>
>
>
> |> # 元々のExceptionをinitCauseしていなくて出所がわからず少し苦労しました。
>
> このドライバのソース全体にいえることなんですが、
> SQLException#initCause(Throwable)を一切使っていないように思います。
>
> 特に上の(ResultSet.java:5639)の部分の場合、ソースを見えればわかりますが、
> initCauseを使用することで圧倒的にデバッグがしやすくなると思います。
>
> initCauseをあえて使っていないとしても、その意図がよくわかりません。
> パフォーマンスを気にするのであればこのようなドライバにはならないと思いま
> すし。。。
>
>
>
> |現在MySQL ABのConnectorsチームにてインターンを行っている者です。
> |(Mark Matthewsの下で働いております)
>
> MySQL信者としては非常にうらやましい環境です^^
>
>
>
> |長沢さんが書かれている以下の現象ですとか、あるいは高橋さんが
> |お感じになられている現Connector/Jへの不満点ですとか、
> |よろしければ詳しいフィードバックをいただければと思うのですがいかがでしょうか。
>
> 個人的な要望としては、下位互換とシンプルで堅いドライバがほしいです。
> ただ、Connector/Jを見ているとコンセプトが少し違うように思いますが。。。
>
>
>
>
>
>
>
> P.S. 全く関係ないんですが、Excelのファイル名に[]を入れると
> シート名が変更できなくなるのを今日発見しましたw
>
> ---
> NAGASAWA Teruo <tech-ml@xxxxxxxxxx>
>
>
>
>

[前][次][番号順一覧][スレッド一覧]

     12200 2005-10-01 23:53 [NAGASAWA Teruo <tech] 皆さんの使っているJDBCドライバのバージョン
     12201 2005-10-01 23:53 ┣["TAKAHASHI, Tomohiro]                                       
     12202 2005-10-01 23:58 ┃┗["TAKAHASHI, Tomohiro]                                     
     12203 2005-10-02 00:23 ┃ ┗[NAGASAWA Teruo <tech]                                   
     12206 2005-10-03 15:28 ┗[Tetsuro IKEDA <tetsu]                                       
     12211 2005-10-05 01:35  ┗[NAGASAWA Teruo <tech]                                     
     12212 2005-10-05 02:13   ┣[Tetsuro IKEDA <ikdtt]                                   
->   12213 2005-10-05 06:22   ┣[Tetsuro IKEDA <ikdtt]                                   
     12214 2005-10-05 07:17   ┃┣[Tetsuro IKEDA <tetsu]                                 
     12216 2005-10-05 14:52   ┃┗["NAGASAWA Teruo" <te] Re: 皆さんの使っているJDBC= ?ISO-2022-JP?B?GyRCJUklaSUkJVAkTiVQITwlOCVnJXMbKEI=?=
     12217 2005-10-05 15:44   ┃ ┗["TAKAHASHI, Tomohiro] Re: 皆さんの使っているJDBC=?ISO-202 2-JP?B?GyRCJUklaSUkJVAkTiVQITwlOCVnJXMbKEI=
     12218 2005-10-05 17:00   ┃  ┗[NAGASAWA Teruo <tech]                             
     12215 2005-10-05 11:21   ┗["TAKAHASHI, Tomohiro]