Tomcat(8.5)およびmysql(v.8.0.12)でhibernate(5.3.3 Final)を構成しようとしています。 hibernate.connection.urlを「jdbc:mysql:// localhost:3306/sakila」に設定してHibernateTest.Java(チュートリアルの非常に簡単なコード、ここでは問題ありません)を起動すると、次のエラーが発生します。
Caused by: Java.sql.SQLException: The server time zone value 'Paris, Madrid
(heure d?été)' is unrecognized or represents more than one time zone. You
must configure either the server or JDBC driver (via the serverTimezone
configuration property) to use a more specifc time zone value if you want to
utilize time zone support.
MySQLは現在、グローバルおよびセッションの「SYSTEM」タイムゾーンに設定されています(mysql> select @@ global.time_zone、@@ session.time_zone)。そして、私のシステムのタイムゾーンは確かにパリ/マドリードです。 hibernate.cfg.xmlファイルで、接続urlを書くとき:
jdbc:mysql://localhost:3306/sakila?useJDBCCompliantTimezoneShift=true;useLegacyDatetimeCode=false;serverTimezone=UTC;
エラーは次のとおりです。
com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near '=false;serverTimezone=UTC;'.
「&」はEclipseによって拒否されているため、stackoverfloxの投稿「mysqlサーバーのタイムゾーンとjdbc接続の問題」で言及されている問題ではありません。hibernate.cfg.xmlファイルの添付のスクリーンショットを参照してください。
エンティティ「useLegacyDatetimeCode」への参照は、区切り文字「;」で終了する必要があります
Stackoverflowの投稿「不正なデータベースURL、メインURLセクションの解析に失敗しました」で言及されているように、「mysql:」と「// localhost」の間の非表示文字ではありません。私は、MySql Workbenchを使用して、マドリード/パリの夏時間に合うローカル時間(default-time-zone = '+02:00')のオプションを設定することで、この問題を回避しようとしました(私の場合)。何も変わりません。何か案が?別の場所に設定する必要がありますか?あなたの助けをありがとう、私はこれを3日間知っていましたが、成功しませんでした。
私はついに解決策に出会いました。どちらも「;」ではないように見えたまた、「&」は複数のパラメーターを追加するトリックを実行しません。すべてのパラメーターを取り出し、1つのパラメーターのみを試しました。
jdbc:mysql://localhost:3306/sakila?serverTimezone=UTC
そして、それはトリックをしました、私はもうこれで問題を持ちません。
&
をエスケープする必要があります:
jdbc:mysql://localhost:3306/sakila?useSSL=false&serverTimezone=UTC
詳細はこちらをご覧ください: https://docs.jboss.org/exojcr/1.12.13-GA/developer/en-US/html/ch-db-configuration-hibernate.html
次のURLでエラーが発生しました:jdbc:mysql:// localhost:3306/db?useLegacyDatetimeCode = false&serverTimezone = CET
これは私のために働いた:「&」を「&」に置き換えます。