1

ローカルのMySqlで実行されるPlay/Scalaアプリケーションを開発しました。しかし、必要なデータベース URL 引数(Java TimeStamp) は、Herokuが行う URL のさらなる連結によって壊れてしまうため、私のアプリは(Heroku MySql オファリング) への接続を取得できません。zeroDateTimeBehavior=convertToNullClearDB

これが私の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 として表現できないという問題を解決しました

4

0 に答える 0