471 Stimmen

MySQL JDBC Treiber 5.1.33 - Zeitzone Problem

Einige Hintergrundinformationen:

Ich habe eine Java 1.6 Webanwendung, die auf Tomcat 7 läuft. Die Datenbank ist MySQL 5.5. Zuvor habe ich den MySQL JDBC-Treiber 5.1.23 verwendet, um eine Verbindung zur Datenbank herzustellen. Alles hat funktioniert. Vor kurzem habe ich auf den MySQL JDBC-Treiber 5.1.33 aktualisiert. Nach dem Upgrade hat Tomcat diesen Fehler beim Starten der Anwendung ausgegeben.

WARNING: Unexpected exception resolving reference
java.sql.SQLException: Der Server-Zeitzone-Wert 'UTC' wird nicht erkannt oder repräsentiert
  mehr als eine Zeitzone. Sie müssen entweder den Server oder den JDBC-Treiber (über
  die serverTimezone-Konfigurationseigenschaft) konfigurieren, um einen genaueren Zeitzone-Wert zu verwenden, wenn
  Sie Zeitzonensupport nutzen möchten.

Warum passiert das?

18voto

Aathil Ahamed Punkte 454

Das obige Programm wird diesen Zeitzonenfehler generieren.

Nach Ihrem Datenbanknamen müssen Sie Folgendes hinzufügen: ?useTimezone=true&serverTimezone=UTC. Sobald Sie das erledigt haben, wird Ihr Code einwandfrei funktionieren.

Viel Glück :)

16voto

felice de simone Punkte 161

Ich hatte das gleiche Problem und habe es gelöst, indem ich nur "?serverTimezone=UTC" an meinen Verbindungsstring angehängt habe.

#

Beschreibung meines Problems:

java.sql.SQLException: Der Server-Zeitzonenwert 'CEST' wird nicht erkannt oder stellt mehr als eine Zeitzone dar. Sie müssen entweder den Server oder den JDBC-Treiber (über die serverTimezone-Konfigurationseigenschaft) konfigurieren, um einen spezifischeren Zeitzonenwert zu verwenden, wenn Sie die Zeitzonenunterstützung nutzen möchten.

mein dbTreiber = com.mysql.jdbc.Driver

mein Jar = mysql-connector-java-8.0.12.jar

mein Java = 1.8

mein Tomcat = Apache Tomcat Version 8.5.32

mein MySql-Server = MySql ver.8.0.12

15voto

Ingvar Punkte 151

Alles, was wir brauchen, um das Problem mit serverTimezone zu beheben:

String url = "jdbc:mysql://localhost:3306/db?serverTimezone=" + TimeZone.getDefault().getID()

14voto

Hermann N'ZI Punkte 133

Es hat keine Auswirkungen, die Serverzeit als UTC festzulegen (zum Beispiel mit jdbc:mysql://localhost:3306/myschema?serverTimezone=UTC), auch wenn Ihre Anwendungs-/Datenbankserver nicht in dieser Zeitzone sind. Wichtig ist, dass die Verbindungszeichenfolge der Anwendung + Datenbank mit der gleichen Zeitzone synchronisiert ist.

Anders gesagt, das einfache Festlegen von serverTimezone=UTC mit einer anderen Zeitzone auf dem Datenbankserver verschiebt alle aus der Datenbank extrahierten Daten

14voto

Arefe Punkte 8879

Sie können den MySQL Connector in der Maven-Abhängigkeit verwenden,

    mysql
    mysql-connector-java
    8.0.14

Dann müssen Sie die richtigen Parameter in der application.properties Datei setzen,

spring.datasource.url=jdbc:mysql://localhost:3306/UserReward?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=testuser
spring.datasource.password=testpassword
# MySQL driver
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X