Ich verwende Hibernate (Hibernate Maven 5.2.15.Final, MySQL-Connector Maven 8.0.9-rc) mit MySQL 5.7 auf LAMPP-Umgebung unter Linux so.
Ich bin in Italien (Mitteleuropäische Sommerzeit) und einmal am 25. März, tritt folgender Fehler auf:
Der Serverzeitzonenwert 'CEST' wird nicht erkannt oder repräsentiert mehr als eine Zeitzone. Sie müssen entweder den Server oder den JDBC-Treiber (über die Konfigurationseigenschaft serverTimezone) so konfigurieren, dass ein genauerer Zeitzonenwert verwendet wird, wenn Sie die Zeitzonenunterstützung verwenden möchten.
Auf der MySQL-Konsole lief ich:
SHOW GLOBAL VARIABLES LIKE 'time_zone';
SET GLOBAL time_zone='Europe/Rome';
aber das blieb nicht bestehen.
Dann habe ich zu my.cnf
Datei (in/etc/mysql):
[mysqld]
default-time-zone = 'Europe/Rome'
und auch:
default_time_zone = 'Europe/Rome'
aber der db server hat noch nicht gestartet ...
Warum tritt der Fehler auf? Könnte mir jemand helfen?
Vielen Dank!
Die Antwort von @ aiman ist nicht korrekt, da in Ihrem Fall die effektive Server-Zeitzone nicht UTC ist.
Sie finden im Internet einige Lösungen, einschließlich zusätzlicher Parameter in der jdbc-Verbindungszeichenfolge, aber es gibt Fälle, in denen Sie diese Zeichenfolge nicht ändern können.
So habe ich es behoben:
Importieren Sie zuerst die System-Zeitzonen in MySQL:
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Dann legen Sie Ihre Standard-MySQL-Server-Zeitzone in der [mysqld]
Abschnitt von /etc/mysql/my.cnf
(Oder von /etc/mysql/mysql.conf.d/mysqld.cnf
auf aktuellen Debian/Ubuntu-Distributionen) zu Ihrer aktuellen Server-Zeitzone, zum Beispiel:
default_time_zone = Europe/Paris
und vergessen Sie nicht, mysql neu zu starten
$ Sudo service mysql restart
(oder den entsprechenden Befehl abhängig von Ihrer Distribution).
Zuerst sehen Sie Ihre MySQL-Server-Zeitzone:mysql -e "SELECT @@global.time_zone;" -u <mysqluser> -p
.
Höchstwahrscheinlich sollte es SYSTEM
sein.
Finden Sie Ihre System-Zeitzone: date +”%Z
.
Sehen Sie, ob es MESZ ist.
Sie müssen die Zeitzone Ihres Systems ändern:
#cd /usr/share/zoneinfo
#ls -l
#rm /etc/localtime
#ln -s /usr/share/zoneinfo/UTC /etc/localtime
Starten Sie dann Ihren MySQL-Server neu: /etc/init.d/mysqld restart
.
Genießen