Este artigo fornece instruções detalhadas sobre a resolução de vários problemas de compatibilidade da base de dados MySQL, incluindo problemas de compatibilidade e erros de agrupamento de tabelas.
Problemas de compatibilidade
Para evitar problemas de incompatibilidade da base de dados, certifique-se de que as versões da base de dados entre os servidores de compilação e de instalação são tão próximas quanto possível. Se a cópia de segurança tiver sido criada numa versão de base de dados mais recente do que aquela em que está a ser instalada, poderá ter problemas.
É melhor certificar-se de que o servidor onde o instalador está a ser executado tem o mesmo número de versão ou superior ao do servidor onde foi construído. Se as versões maior e menor forem iguais ou próximas (por exemplo, [5.7 para 5.6]), então a migração deve funcionar sem problemas. Um par de versões de [5.7 a 5.1] é mais suscetível de causar problemas, a menos que tenha uma configuração muito simples. Se as versões estiverem muito distantes, trabalhe com o seu fornecedor de alojamento para atualizar o motor MySQL neste servidor.
Solução 1: FORMATO UTF8MB4
Se a versão atual do servidor MySQL detectada for inferior a 5.5.3 (lançamento em 8 de abril de 2010), o suporte para tabelas utf8mb4 não funcionará. O formato utf8mb4 só é suportado no servidor MySQL 5.5.3+. É altamente recomendável atualizar a sua versão do servidor MySQL neste servidor para ser mais compatível com as versões recentes do WordPress e evitar problemas com erros de instalação.
Solução 2: UTF8 INPUTS
Se forem detectados caracteres não-ASCII como parte da cadeia de ligação da base de dados e o servidor MySQL não estiver configurado corretamente, não será possível estabelecer ligação. Este problema pode ser resolvido actualizando a configuração my.ini do MySQL.
Adicione a definição character_set_server=utf8 em [mysqld] e reinicie o servidor de base de dados. Este valor pode apenas precisar de ser descomentado.
Solução 3: MARIA-DB SETUPS
Se uma versão de 10.N.N aparecer, então a distribuição da base de dados é uma variante MariaDB do MySQL. Embora as distribuições sejam muito próximas, existem algumas diferenças subtis. Alguns sistemas operativos irão reportar a versão como "5.5.5-10.1.21-MariaDB" mostrando a correlação de ambas. Por favor, visite a página online MariaDB versus MySQL - Compatibilidade para mais detalhes.
Observe que algumas mensagens são simplesmente avisos. É altamente recomendável continuar com o processo de instalação e monitorar de perto o arquivo installer-log.txt junto com o relatório de instalação encontrado na etapa 3 do instalador. Certifique-se de que procura quaisquer avisos/avisos/erros nestes locais para validar que o processo de instalação não detectou quaisquer erros. Se forem encontrados quaisquer problemas, visite as páginas de FAQ e consulte a pergunta "Como resolver erros da base de dados ou avisos gerais no relatório de instalação?"
Solução 4: CRIAR TABELAS
A criação de tabelas no MySQL e no MariaDB é muito próxima; no entanto, existem algumas pequenas diferenças que podem, por vezes (não é comum), causar problemas. Para ver as diferenças entre cada um, consulte os dois conjuntos de documentação aqui:
Como pode ver, não são uma correspondência de um para um (o MariaDB tem opções que o MySQL não tem), por isso quando tenta executar uma consulta CREATE que funcionou no MariaDB mas tem alguma opção de tabela que o MySQL não suporta, pode falhar. A correção atual é remover as opções de tabela ofensivas do DB dump fazendo uma pesquisa e substituição manual no ficheiro.
Problemas de agrupamento de tabelas
Como resolver os erros de modo de compatibilidade e "Agrupamento desconhecido"?
Existem 4 formas de resolver este problema. A opção 1 é a forma mais rápida, fácil e segura de resolver este problema.
Visão geral do agrupamento desconhecido
Um erro "Unknown collation" significa que o servidor MySQL que está a ser instalado (servidor de destino) é mais antigo do que o motor MySQL em que criou a cópia de segurança. Uma mensagem de erro como:
ERROR database error write 'Unknown collation: 'utf8mb4_unicode_ci'
será acionado porque a versão do MySQL que está a ser utilizada não suporta este formato de tabela. Pode ver a comparação da versão do servidor MySQL clicando no botão "Testar Ligação" no instalador ou visualizando o ficheiro installer-log.txt. O resultado será algo parecido com:
VERSÃO MYSQL: Este servidor: 5.4.22 - Servidor de compilação: 5.7.10
Opção 1 - Atualizar o software da base de dados
A forma mais limpa e segura de corrigir o problema "Unknown Collation" é atualizar o seu servidor MySQL de destino para a mesma versão ou para uma versão mais recente do que aquela em que a cópia de segurança foi criada. Os erros de formato mais comuns incluem:
- utf8mb4_unicode_ci: É necessário o servidor MySQL 5.5.3+.
- utf8mb4_unicode_520_ci: É necessário o servidor MySQL 5.6+.
Melhor solução: A melhor e mais fácil forma de resolver este problema é pedir ao seu anfitrião para mover a sua conta para um servidor MySQL que suporte o tipo de agrupamento de que necessita (ver exemplo acima). Basta fornecer-lhes a mensagem de erro que está a receber e eles podem ajudá-lo a mudar para o servidor correto.
A maioria dos anfitriões não actualizará o servidor atual em que o seu site se encontra; no entanto, devem ser capazes de mover facilmente a sua conta para um servidor mais recente. Esta é uma prática muito comum e um bom anfitrião deve ser capaz de o ajudar muito facilmente.
Se estiver a executar uma versão inferior a 5.5.3, está a utilizar uma versão muito desatualizada do servidor MySQL. A versão 5.5.3 foi lançada em 2010, o que significa que a versão do servidor MySQL que está a utilizar é ainda mais antiga. Encorajamos vivamente os utilizadores a trabalharem com os seus anfitriões para utilizarem software atualizado para melhorar a segurança e o desempenho e para se manterem em conformidade com as actualizações do núcleo do WordPress. Não deixe que um host de baixa qualidade use software desatualizado no seu site.
Opção 2 - Conjunto de carateres e agrupamento predefinidos
No instalador, no passo 2, em opções, a caixa de verificação "Legacy" já não existe. No entanto, é agora detectada e definida automaticamente. Se o conjunto de caracteres e o agrupamento não forem explicitamente definidos, aparecerá um aviso a indicar que serão utilizados o conjunto de caracteres e o agrupamento predefinidos.
Ao criar uma tabela de base de dados, a versão do MySQL que está a ser utilizada pode não suportar o tipo de agrupamento da versão do MySQL onde a tabela foi criada. Neste cenário, o instalador irá automaticamente fazer um fallback do tipo de agrupamento para tentar criar a tabela.
Opção 3 - Executar o modo de compatibilidade
O modo de compatibilidade Mysqldump ajuda a produzir uma saída de script SQL de base de dados que é mais compatível com outros sistemas de base de dados ou com servidores MySQL mais antigos.
O Duplicador suporta vários modos de compatibilidade, todos eles apenas disponíveis quando o modo mysqldump está ativado no plug-in. O modo de compatibilidade pode ser ativado ao criar uma cópia de segurança utilizando a opção mysqldump.
O Duplicador só permite o modo de compatibilidade durante o processo de criação. Ele não é permitido durante a criação de modelos ou com agendamentos. A razão para esta configuração é desencorajar a utilização destas definições e corrigir o verdadeiro problema - que é atualizar o seu servidor de base de dados.
Actualizações da base de dados: O Modo de Compatibilidade só deve ser usado como último recurso. A abordagem recomendada para resolver problemas da base de dados é certificar-se de que ambos os servidores da base de dados estão actualizados e muito próximos em termos de números de versão (ver Opção 1). Por exemplo, se o servidor de base de dados onde criou a cópia de segurança for 5.7.5, o servidor de base de dados onde instalou a cópia de segurança deve estar, pelo menos, no intervalo 5.7.N. Peça ao seu anfitrião ou administrador do servidor para atualizar o servidor MySQL para uma versão mais recente, se possível. Se o seu anfitrião não atualizar para uma versão recente, peça-lhe para atualizar para a versão mais recente possível.
Preservação de dados: Embora existam várias soluções alternativas na Internet (Opção 4) que explicam como pode modificar o ficheiro SQL atual ou utilizar o modo de compatibilidade mysqldump, a principal questão subjacente é que armazenou os dados num formato e agora vai convertê-los. Estas técnicas podem levar à perda de dados e a problemas de incompatibilidade mais tarde. A abordagem correta é atualizar o software MySQL.
Considere experimentar ambos os modos:
- Atualmente, o Duplicator suporta dois modos diferentes: Mysqldump e PHP Mode (ver Configurações " Opção Backups).
- Se estiver a deparar-se com problemas de caracteres e a ficar sem opções, pode considerar tentar construir a base de dados em ambos os modos para ver se um ou outro resolve os problemas.
Opção 4 - Configurações manuais
Estas opções destinam-se a utilizadores avançados e devem ser executadas com precaução. As opções requerem a atualização do script database.sql ou a atualização dos tipos de agrupamento da tabela da base de dados de origem. Abaixo estão três abordagens diferentes; apenas uma opção é necessária para resolver o problema.
Atualizar base de dados.sql
Para problemas de "agrupamento desconhecido", pode tentar os seguintes passos:
- Extraia o ficheiro zip manualmente.
- Abra o ficheiro database.sql com o bloco de notas e procure e substitua as colações. Por exemplo, pode:
- substituir: 'utf8mb4' por 'utf8'
- substituir: 'utf8_unicode_520_ci' por 'utf8_general_ci'
Experimente sempre estas opções primeiro numa área restrita e nunca num site de produção até se sentir confortável com os resultados.
Em seguida, navegue até ao ficheiro installer.php no servidor e escolha Avançado e selecione "Extração manual".
Isto também pode ser tentado com outros agrupamentos (ou seja, substitua 'collation_type_1' por 'collation_type_2').
Atualizar a base de dados de origem com o código
Esta opção requer que compreenda realmente o seu sistema e que tenha efectuado cópias de segurança antecipadamente. O script permitirá que você altere o agrupamento no servidor de compilação para que ele possa ser suportado pelo servidor de destino. O script completo pode ser visto no Stack Overflow em: http://stackoverflow.com/a/29939906/2808424
Atualizar a base de dados de origem com o IDE
Se não se sentir à vontade para executar o código acima, também pode utilizar um IDE ou uma ferramenta GUI que lhe permita alterar manualmente os agrupamentos de tabelas com instruções SQL ou através de uma interface. Mais uma vez, estas opções requerem que conheça bem o seu sistema e que tenha efectuado cópias de segurança antecipadamente.
Abaixo encontram-se algumas instruções passo a passo fáceis de seguir para atualizar os agrupamentos através de um IDE como o phpMyAdmin: