Uma ação em relação ao problema das IDs Integers do GLPI, que são chaves primárias e estrangeiras no banco de dados, foi tomada.
Após alguns debates por parte da equipe de desenvolvimento da Teclib’, foi definida uma alteração, que por ora, é opcional e não será executada automaticamente nem nas atualizações. Ou seja, é executada da mesma maneira que a migração do banco de dados para InnoDB: Através de um script na console do GLPI.
Devo alertar para 5 fatos importantes a serem considerados antes de executar qualquer comando que altere parâmetros dos bancos de dados:
- Sempre comece em uma base de homologação. Nunca em produção;
- Backup antes de tudo;
- Os plugins utilizados na sua base podem exigir execuções e correções manuais de alterações de IDs, updates em tabelas ou até recriação de constraints.
- Você tem acesso a todos os códigos e DEVE revisá-los para se certificar de que não impactarão negativamente no seu ambiente. Não terceirize suas decisões.
- Participe da discussão da solução lá no github caso o problema não seja resolvido na sua base.
O problema começou com 2022 pelo fato de um campo integer, utilizado nos IDs de chamados, aceitar caracteres limitados a 2.147.483.647, o que em Janeiro é facilmente ultrapassado por já iniciar em 202201010001 quando utilizado o formato ymd0001 do Behaviors.
Algumas correções de contorno foram sugeridas aqui, e a Teclib’ criou uma solução definitiva para que, quem quiser manter o formato de chamados, possa executar e continuar os IDs de chamados usando o padrão de protocolos com data na ID.
O script é executado da mesma maneira que o InnoDB – através da console do GLPI em pastadoglpi/bin usando o comando php console glpi:migration:unsigned_keys.
Dessa forma o script busca as tabelas que contêm chaves estrangeiras e primárias com formato integer e realiza a alteração para unsigned.
Na prática o script aumenta as possibilidades de IDs ao não mais reservar espaços de bits para números negativos que ocupam bits importantes no banco de dados.
Referência técnica:
Signed integers – YouTube
Unsigned integers – YouTube
Trouxe no vídeo uma maneira de aplicar o pull lá do github através do aplicativo ‘patch’ e como executar o comando de alteração, mais o update em uma das tabelas que traz um valor negativo e, por conta disso, o ‘script’ não consegue alterar o formato da tabela
Comandos utilizados no vídeo
apt-get install patch #instala o aplicativo patch patch -p1 --dry-run < nomedopatch.patch #testa a integridade do patch patch -p1 < nomedopatch.patch #aplica o patch php console glpi:migration:unsigned_keys #executa a migração das tabelas para unsigned UPDATEglpi_events
SETitems_id
= '0' WHEREitems_id
= '-1' ANDtype
= 'system'; #atualiza os campos -1 na tabela glpi_events com tipo system para 0
Deixe um comentário