Resolver problemas

Erro de fusos horários do GLPI com MariaDB ou MySQL

Revisto a 4 min de leitura base de dados erros

Se, ao atualizar ou instalar o GLPI, vir a seguinte mensagem durante a verificação de requisitos:

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

O aviso confirma que o GLPI não consegue ativar os fusos horários, mas é a versão do GLPI que determina se falta apenas carregar os dados ou também uma permissão.

Porque ocorre este erro

O GLPI 9.5 incorporou o uso de TIMESTAMP para trabalhar com fusos horários. Em todos os casos, o MariaDB ou o MySQL tem de ter carregadas as suas tabelas de fusos horários.

  • GLPI 10.0.20 ou posterior: não precisa de acesso do utilizador da aplicação a mysql.time_zone_name.
  • GLPI anterior à 10.0.20: além dos dados carregados, precisa de SELECT sobre mysql.time_zone_name.

Porque não o pode resolver sozinho

Num alojamento partilhado, a tabela mysql.time_zone_name pertence ao sistema da base de dados, não à sua conta. Isto significa que:

  • Não tem permissões administrativas para carregar os fusos horários com mariadb-tzinfo-to-sql ou o seu alias mysql_tzinfo_to_sql.
  • Não pode executar GRANT sobre tabelas do sistema se uma versão antiga do GLPI o exigir.

Estas operações exigem privilégios administrativos sobre o servidor de base de dados, não necessariamente uma conta chamada root.

Como resolver

Para que ativemos o suporte de fusos horários na sua instalação do GLPI:

  1. Aceda à área de cliente.
  2. Vá à secção Ajuda e abra um novo ticket.
  3. Indique que precisa de ativar o suporte de fusos horários no MariaDB/MySQL para o GLPI e inclua a versão do GLPI e o nome do seu utilizador da base de dados, que encontrará em config/config_db.php. Não envie a palavra-passe.

A nossa equipa fará as configurações necessárias e avisá-lo-á quando estiver pronto para que possa continuar com a atualização.

Se atualizar a partir de uma versão antiga e o GLPI detetar colunas DATETIME, reveja também o comando oficial php bin/console glpi:migration:timestamps; pode ser uma migração longa e deve ser testada com uma cópia verificada.

Consulte a documentação oficial de fusos horários do GLPI. O MySQL limita TIMESTAMP a janeiro de 2038; o MariaDB alargou esse intervalo a partir da versão 11.5. Avalie o limite efetivo do servidor se a aplicação precisar de guardar datas posteriores.

Verificar após a intervenção

Volte a executar a verificação de requisitos com o mesmo PHP e a mesma ligação que o GLPI utiliza. Depois teste a visualização e a edição de uma data com o fuso esperado. Alterar o fuso no PHP não carrega as tabelas de fusos do MySQL nem conclui uma migração de colunas.

Se for pedida uma migração de timestamps, guarde o estado inicial e reveja a sua duração e o resultado num clone. Não execute o comando várias vezes em paralelo nem altere diretamente todas as colunas por SQL sem o procedimento dessa versão.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.