MySQLのTIMESTAMP型のNULLをTorqueで扱おうとするとエラーかよ・・

最近、Oracleを使ってたんだけど、家で仕事するのにDBをMySQLを使おうと思ったら、すんなりいかなかったのでメモ。

Torqueを使ってるから、なるべくOracleMySQLの両方で扱いやすいデータ型にしようとおもって、日付をTIMESTAMPにしたんだけど、これ必須じゃないと、Torqueでデータ取得しようとするエラーになっちゃった・・・


なんか、nullの場合、DBから取得した値が"0000-00-00 00:00:00"だから、変換できないって・・・

なんだよ、それ・・・

ということで、ググったら出てきた。

suz-lab: Connector/J(MySQL-JDBC)のzeroDateTimeBehavior

接続URLのパラメータとして、
zeroDateTimeBehavior
というものが用意されています。

とり得る値として
exception : SQLExceptionをスロー(デフォルト)
convertToNull : nullを返す
round : "0001-01-01 00:00:00"を返す

というのがあり、どうやら接続パラメータにこれを指定するとよいとのこと。


と、いうことで

torque.dsfactory.(HOGEHOGE).connection.url = jdbc:mysql://127.0.0.1/java?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull

を、Torque.propertiesに設定。

う〜ん、最初っから、NULLで扱ってくれればいいのに・・・