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

小云云
小云云original
2017-12-22 13:38:131649parcourir

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"/>


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.

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"/>

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());
Asia/Shanghai
中国标准时间

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!

Déclaration:
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