web-dev-qa-db-fra.com

La valeur de fuseau horaire du serveur 'CEST' n'est pas reconnue

J'utilise hibernate (Hibernate Maven 5.2.15.Final, connecteur Mysql Maven 8.0.9-rc) avec mysql 5.7 sur l'environnement lampp sous linux.

Je suis en Italie (heure d'été d'Europe centrale) et une fois le 25 mars, survient après l'erreur sur la connexion db:

La valeur de fuseau horaire du serveur 'CEST' n'est pas reconnue ou représente plusieurs fuseaux horaires. Vous devez configurer le serveur ou le pilote JDBC (via la propriété de configuration serverTimezone) pour utiliser une valeur de fuseau horaire plus spécifique si vous souhaitez utiliser la prise en charge du fuseau horaire.

Sur la console mysql, j'ai lancé:

SHOW GLOBAL VARIABLES LIKE 'time_zone';
SET GLOBAL time_zone='Europe/Rome'; 

mais cela n'a pas persisté.

Puis j'ai ajouté au fichier my.cnf (Dans/etc/mysql):

[mysqld] 
default-time-zone = 'Europe/Rome' 

et aussi:

default_time_zone = 'Europe/Rome' 

mais le serveur de base de données n'a pas encore démarré ...

Pourquoi l'erreur se produit? Quelqu'un pourrait-il m'aider?

Merci!

13
Filippodb

La réponse de @ aiman n'est pas correcte car, dans votre cas, le fuseau horaire effectif du serveur est not UTC.

Vous trouverez sur le net des solutions incluant des paramètres supplémentaires sur la chaîne de connexion jdbc, mais il peut arriver que vous ne puissiez pas modifier cette chaîne.

Voici comment je l'ai corrigé:

Commencez par importer les fuseaux horaires du système dans mysql:

$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Puis définissez votre fuseau horaire du serveur mysql par défaut dans le [mysqld] section de /etc/mysql/my.cnf (ou de /etc/mysql/mysql.conf.d/mysqld.cnf sur les distributions Debian/Ubuntu récentes) dans votre fuseau horaire de serveur actuel, par exemple:

default_time_zone = Europe/Paris

et n'oubliez pas de redémarrer mysql

$ Sudo service mysql restart

(ou la commande appropriée en fonction de votre distribution).

15
Claude Brisson

Tout d’abord, voyez votre fuseau horaire du serveur mysql:
mysql -e "SELECT @@global.time_zone;" -u <mysqluser> -p.
Probablement que ce devrait être SYSTEM.
Trouvez le fuseau horaire de votre système: date +”%Z.
Voir si son CEST.
Vous devez changer le fuseau horaire de votre système:

#cd /usr/share/zoneinfo
#ls -l
#rm /etc/localtime
#ln -s /usr/share/zoneinfo/UTC /etc/localtime

Puis redémarrez votre serveur mysql: /etc/init.d/mysqld restart.

Prendre plaisir

6
aiman