Maison > base de données > tutoriel mysql > Explication détaillée de la façon d'éviter le piège du fuseau horaire de l'URL dans MySQL

Explication détaillée de la façon d'éviter le piège du fuseau horaire de l'URL dans MySQL

小云云
Libérer: 2017-12-22 13:38:13
original
1649 Les gens l'ont consulté

Récemment, lorsque vous utilisez des fichiers jar de mysql 6.0.x ou supérieur, vous devez spécifier serverTimezone dans le lien de l'URL du code. Une exception se produira.Cette question concerne le fuseau horaire de l'URL dans MySQL. Si vous ne faites pas attention à ce piège, vous risquez de le rencontrer. Cet article vous explique principalement comment éviter le piège du fuseau horaire de l'URL dans MySQL.

1. ServerTimezone n'est pas spécifié

Exception lors de la configuration de l'URL en XML

<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>
Copier après la connexion


Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' 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.
Copier après la connexion

Vous devez Configurez le serveur ou le pilote JDBC (via la propriété de configuration serverTimezone). Si vous souhaitez utiliser la prise en charge du fuseau horaire, vous devez utiliser une valeur de fuseau horaire plus détaillée.

2. Solutions en ligne

Ajouter des paramètres après l'url?serverTimezone=utc

<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>
Copier après la connexion

Problèmes rencontrés

Bien que le programme avec le fuseau horaire ajouté ci-dessus ait fonctionné sans erreur, un problème est survenu lorsque nous avons utilisé du code Java pour insérer l'heure dans la base de données.

Par exemple, l'heure insérée dans le code java est : 2017-08-21 17:29:56

Mais l'heure affichée dans la base de données est : 2017-08- 21 09:29:56

3. La cause première est

en raison du problème de réglage du fuseau horaire.

UTC représente l'heure standard mondiale, mais l'heure que nous utilisons est le fuseau horaire de Pékin, qui est le huitième district de l'Est, huit heures en avance sur UTC.

UTC + (+0800) = heure locale (Pékin)

4. Solution Le fuseau horaire de

url utilise l'heure standard de la Chine. Également serverTimezone=Asia/Shanghai

4.1 Utilisez le code Java pour obtenir l'identifiant du fuseau horaire local

Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
Copier après la connexion
Asia/Shanghai
中国标准时间
Copier après la connexion

Recommandations associées :

Exemples d'utilisation de ou d'instruction dans MySQL

Explication détaillée des index et des déclencheurs dans MySQL

Résumé des fonctions de date dans MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal