[Seasar-user:16765] Re: [S2JDBC] 日付型カラムに解析不能な文字列(0000-00-00)がある場合の対処方法について。
林 良徳
[E-MAIL ADDRESS DELETED]
2009年 1月 27日 (火) 15:23:04 JST
ひが様
林です。
> JDBCのURLに?zeroDateTimeBehavior=convertToNullを
> 加えてください。
早速のご回答ありがとうございます。
教えていただいた内容を確認してみました。
--- jdbc.diconへの追加内容ここから -------------------------------
<!-- ?zeroDateTimeBehavior=convertToNull を追加 -->
<property name="URL">"jdbc:mysql://localhost:3306/hoge?zeroDateTimeBehavior=convertToNull"</property>
------------------------------------------------------------------
--- JDBC-Genで作成されたサービスへのテストメソッドの追加 ---------
public void testZeroFillDateRecord() throws Exception {
assertNotNull(accountService.findById("hayashi", "hogehoge"));
}
------------------------------------------------------------------
?zeroDateTimeBehavior=convertToNull
を付与削除してテスト実施確認し、設定時にはSQL例外は発生しなくなりました。
# 但し、以下のような'0000-00-00'→NULLに変換した際の
# 列名を出力しようとして置換に失敗している?と思しきログが出力されました。
# Tue Jan 27 14:46:54 JST 2009 WARN: Invalid value {1} for server
# variable named {0}, falling back to sane default of {2}.
> 例外が発生した場合は、エラーメッセージ(この場合だと
> '0000-00-00' can not be represented as java.sql.Date)でぐぐると
> 解決することが多いですよ。
全く持ってその通りです…以後注意いたします。
また、Seasar2及びS2JDBCについては殆ど関係なかった上に
さらに環境(DBがどれかも)記載しておらず…申し訳ありません。
お詫びいたします。
なお、教えていただいた設定について念のため調べてみたところ、
以下のURLにて(「DateTimes」箇所)記述がありましたので、
参考までに貼り付けておきます。
http://dev.mysql.com/doc/refman/5.1/en/connector-j-installing-upgrading.html
以上、有難うございました。
Seasar-user メーリングリストの案内