Base de conhecimento
1000 perguntas frequentes, 500 tutoriais e vídeos explicativos. Aqui, você encontra apenas soluções!
Usar Views, Triggers, Stored Procedures e Rotinas
Este guia detalha as funcionalidades disponíveis para a gestão de bases de dados relacionais nos serviços de alojamento Infomaniak.
Utilização de Vistas, Triggers, Procedimentos armazenados e Rotinas
No que diz respeito ao gerenciamento de bancos de dados relacionais, a funcionalidade das visualizações ("views") está disponível por padrão, permitindo que os usuários criem visualizações para simplificar o gerenciamento e a apresentação dos dados.
No entanto, algumas funcionalidades avançadas que permitem uma manipulação mais precisa e complexa dos dados, como…
- “gatilhos”
- procedimentos armazenados ("stored procedures")
- rotinas
- e a criação de funções
… estão disponíveis apenas em Servidores Cloud.
Não são permitidas em servidores compartilhados.
Esta restrição deve-se principalmente aos riscos potenciais para a estabilidade da infraestrutura. Uma configuração inadequada ou o uso excessivo destas funcionalidades pode criar ciclos infinitos ou sobrecargas significativas, afetando não só o desempenho do servidor em questão, mas também a experiência de todos os clientes alojados na mesma infraestrutura.
Resolver um problema de importação de um ficheiro de cópia de segurança MySQL/MariaDB
Ao exportar e, em seguida, reimportar um banco de dados MySQL ou MariaDB através da interface de hospedagem da Infomaniak, pode acontecer que a operação falhe devido a erros relacionados aos DEFINER dos gatilhos ou das visualizações. Este caso ocorre quando os objetos do banco de dados foram criados com um usuário específico (chamado definer) que não existe mais no momento da importação.
Na prática, o processo de exportação e importação utiliza um usuário temporário, usado apenas durante essas operações. Após a exclusão desse usuário, as visualizações ou gatilhos definidos com esta conta como DEFINER tornam-se inválidos, causando erros do tipo:
Erro geral: 1449 O utilizador especificado como definidor ('xxxx_temp_1'@'%') não existe
Para evitar este problema, é possível corrigir o ficheiro de cópia de segurança (dump.sql ou dump.sql.gz) antes da sua importação, substituindo as definições de definer por CURRENT_USER. Isto permite associar automaticamente os triggers e views ao utilizador em vigor no momento da importação.
Aqui está um exemplo de comando para modificar o arquivo de despejo antes da importação:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sql
Após realizar essa substituição, o arquivo corrigido pode ser importado normalmente através do Gerenciador Infomaniak. Esse comportamento é conhecido e está relacionado ao funcionamento dos usuários temporários durante o processo de cópia/restauração. Nenhuma modificação no processo de exportação/importação está prevista a curto prazo, mas o assunto continua sendo avaliado em termos de infraestrutura.
Para obter mais informações sobre a variável CURRENT_USER, consulte a documentação oficial de:
Link para esta FAQ: https://faq.infomaniak.com/821
Esta seção de perguntas frequentes foi útil?