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!