ローカルのMySqlで実行されるPlay/Scalaアプリケーションを開発しました。しかし、必要なデータベース URL 引数(Java TimeStamp) は、Herokuが行う URL のさらなる連結によって壊れてしまうため、私のアプリは(Heroku MySql オファリング) への接続を取得できません。zeroDateTimeBehavior=convertToNull
ClearDB
これが私のDB URLです:
db.default.url="mysql://be32d43afc3cb7:c73c404d@us-cdbr-east-03.cleardb.com/heroku_6cf0eb306e78bc8?reconnect=true&zeroDateTimeBehavior=convertToNull"
そしてそれが変形する後続の Heroku バージョン:
JDBC URL = jdbc:mysql://us-cdbr-east-03.cleardb.com/heroku_6cf0eb306e78bc8?reconnect=true&zeroDateTimeBehavior=convertToNull?useUnicode=yes&characterEncoding=UTF-8&connectionCollation=utf8_general_ci
?
デリミネータとで不可思議なことが起こってい&
ます。
Heroku によると、エラーの原因は次のとおりです。
java.sql.SQLException: The connection property 'zeroDateTimeBehavior' only accepts values of the form: 'exception', 'round' or 'convertToNull'. The value 'convertToNull?useUnicode=yes' is not in this set.
では、この引数を構成できる他の方法はありますか? それがないと、次のエラーが発生します。
play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp]]
これは誰かと鐘を鳴らしますか?光を当てることができる人に感謝します。
編集/解決策: Heroku は、ユーザーに提供する DB URL にいくつかの引数も連結します。Heroku が "?" の連結を使用しているためです。独自の引数セットの前に、独自の引数を DB URL に追加しようとしても機能しません。しかし、私は同じようにうまくいくと思われる別の解決策を見つけました。
SET sql_mode = 'NO_ZERO_DATE';
これをテーブルの説明に入れ、「0000-00-00 00:00:00」を java.sql.Timestamp として表現できないという問題を解決しました