Problemas

X columnas no son compatibles con el uso de zonas horarias

En la página principal de GLPI 9.5 aparece la advertencia:

X las columnas no son compatibles con el uso de zonas horarias

Columns are not compatible with timezones usage. GLPI 9.5

No se permite el acceso a la base de datos de zona horaria (MySQL)

En el perfil de los usuarios de una instalación nueva o actualizada a GLPI 9.5 muestra el siguiente mensaje de advertencia:

No se permite el acceso a la base de datos de zona horaria (MySQL).

Explicación

Ambos errores tienen el mismo origen. A partir de la versión 9.5 de GLPI los campos de fecha de base de datos dejan de ser DATETIME para convertirse en TIMEZONE. Para instalaciones en las que se trabaje en varias zonas horarias esta es una gran mejora, dado que cada usuario recibirá las horas en función de la configuración de su perfil, independientemente de la hora del sistema/base de datos.

Este cambio no se produce de manera automática, y en el caso de las actualizaciones habrá que realizar una migración de todos los campos DATETIME a TIMEZONE.

Solución

Realiza un backup completo de tu máquina antes de realizar cualquier modificación.

Solución basada en documentación oficial de GLPI: https://glpi-install.readthedocs.io/en/develop/timezones.html

Inicializar las zonas horarias de tu base de datos

Tendrás que inicializar los datos de las zonas horarias de tu sistema, para esto ejecuta el siguiente comando con el usuario root de MariaDB:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -p -u root mysql

Establecer una zona horaria

No es indispensable, pero si una buena práctica.

->  Solucionar mensaje "MySQL strict mode is not enabled" en GLPi

Edita el archivo de configuración:

vim /etc/mysql/my.cnf

(la ruta depende del sistema operativo) y añade a [mysqld] la zona horaria por defecto:

default-time-zone = 'Europe/Madrid'

(en este ejemplo Europe/Madrid)

MySQL timezone setup

Reiniciar el servicio

Reinicia el servicio:

systemctl restart mariadb

Dar permisos al usuario de GLPI

El usuario de la base de datos de GLPi debe tener acceso de lectura en la tabla mysql.time_zone_name. Suponiendo que el usuario de GLPi es [email protected], ejecuta los siguientes comandos:

mysql -u root -p
GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpi'@'localhost';
FLUSH PRIVILEGES;

Migración

Migrar las bases de datos existentes a la nueva zona horaria, escribe el siguiente comando:

bin/console glpi:migration:timestamps

timezone migration

Resultado

El usuario ya puede establecer zonas horarias y ambos mensajes han desaparecido.