Maison > Article > base de données > Comment résoudre les conflits de fuseaux horaires MySQL et Java dans les connexions à la base de données ?
Résolution des écarts de fuseau horaire MySQL dans les connexions à la base de données Java
Dans certains scénarios, les fuseaux horaires de la base de données MySQL et les fuseaux horaires du serveur Java peuvent entraîner des incohérences lorsque vous travaillez avec des valeurs datetime. Cet article aborde ce problème et fournit une solution complète utilisant le connecteur MySQL JDBC.
Le problème provient du comportement par défaut de MySQL consistant à utiliser le fuseau horaire « GMT 8 » alors que Tomcat fonctionne sur « GMT ». Cet écart entraîne le stockage de valeurs datetime incorrectes dans la base de données et leur récupération en Java.
Pour remédier à cela, l'URL de connexion doit être modifiée pour inclure les paramètres suivants :
Cependant, cette approche a été remplacée par une solution plus robuste impliquant le utilisation de useLegacyDatetimeCode=false. Ce paramètre désactive l'ancien code de gestion de la date et de l'heure et active le nouveau mécanisme de gestion de l'horodatage dans le connecteur MySQL JDBC.
En définissant useLegacyDatetimeCode=false, le code Java peut spécifier un objet Calendrier lors de la définition des horodatages. . Cet objet Calendar doit être nul, car sa présence entraînerait le formatage des valeurs datetime en fonction du fuseau horaire du serveur Web, introduisant ainsi une confusion.
Pour récupérer correctement les valeurs datetime, le getTimestamp(int) La méthode doit être utilisée sans spécifier d’objet Calendar. Cela garantit que le fuseau horaire de la base de données est exclusivement utilisé pour le formatage.
Il est important de noter que le fuseau horaire du serveur Web n'a plus d'importance avec cette approche. De plus, si MySQL se plaint d'un fuseau horaire de serveur ambigu (par exemple, EST), il peut être explicitement spécifié dans l'URL de connexion en utilisant serverTimezone=
Cette solution a considérablement amélioré la précision de la gestion de la date et de l'heure lors de l'interface avec les bases de données MySQL à partir d'applications Java.
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!