Résoudre les problèmes

Erreur de fuseaux horaires de GLPI avec MariaDB ou MySQL

Vérifié le 4 min de lecture base de données erreurs

Si, lors de la mise à jour ou de l'installation de GLPI, vous voyez le message suivant pendant la vérification des prérequis :

Datos de la zona horaria de la base de datos
Activar el uso de zonas horarias.
Las zonas horarias no parecen estar cargadas

L'avertissement confirme que GLPI ne peut pas activer les fuseaux horaires, mais c'est la version de GLPI qui détermine s'il manque seulement le chargement des données ou aussi une permission.

Pourquoi cette erreur se produit

GLPI 9.5 a introduit l'utilisation de TIMESTAMP pour gérer les fuseaux horaires. Dans tous les cas, MariaDB ou MySQL doit avoir chargé ses tables de fuseaux horaires.

  • GLPI 10.0.20 ou ultérieur : l'utilisateur de l'application n'a pas besoin d'accéder à mysql.time_zone_name.
  • GLPI antérieur à 10.0.20 : en plus des données chargées, il faut SELECT sur mysql.time_zone_name.

Pourquoi vous ne pouvez pas le résoudre vous-même

Sur un hébergement mutualisé, la table mysql.time_zone_name appartient au système de la base de données, et non à votre compte. Cela signifie que :

  • Vous n'avez pas les permissions d'administration pour charger les fuseaux horaires avec mariadb-tzinfo-to-sql ou son alias mysql_tzinfo_to_sql.
  • Vous ne pouvez pas exécuter GRANT sur des tables système si une ancienne version de GLPI l'exige.

Ces opérations nécessitent des privilèges d'administration sur le serveur de base de données, pas forcément un compte nommé root.

Comment le résoudre

Pour que nous activions la prise en charge des fuseaux horaires pour votre installation de GLPI :

  1. Connectez-vous à l'espace client.
  2. Allez dans la section Aide et ouvrez un nouveau ticket.
  3. Indiquez que vous avez besoin d'activer la prise en charge des fuseaux horaires dans MariaDB/MySQL pour GLPI et précisez la version de GLPI et le nom de votre utilisateur de base de données, que vous trouverez dans config/config_db.php. N'envoyez pas le mot de passe.

Notre équipe effectuera les configurations nécessaires et vous préviendra lorsque tout sera prêt pour que vous puissiez poursuivre la mise à jour.

Si vous mettez à jour depuis une ancienne version et que GLPI détecte des colonnes DATETIME, consultez aussi la commande officielle php bin/console glpi:migration:timestamps ; la migration peut être longue et doit être testée avec une sauvegarde vérifiée.

Consultez la documentation officielle de GLPI sur les fuseaux horaires. MySQL limite TIMESTAMP à janvier 2038 ; MariaDB a étendu cette plage à partir de la version 11.5. Tenez compte de la limite effective du serveur si l'application doit stocker des dates ultérieures.

Vérifier après l'intervention

Relancez la vérification des prérequis avec le même PHP et la même connexion que ceux utilisés par GLPI. Testez ensuite l'affichage et la modification d'une date avec le fuseau attendu. Changer le fuseau dans PHP ne charge pas les tables de fuseaux de MySQL et ne termine pas une migration de colonnes.

Si une migration des timestamps est demandée, conservez l'état initial et examinez sa durée et son résultat sur un clone. N'exécutez pas la commande plusieurs fois en parallèle et ne modifiez pas directement toutes les colonnes en SQL sans la procédure de cette version.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.