Relançar a atualização do banco de dados utf8mb4 4.2

14

Atualizei o WP para 4.2 enquanto estava em um servidor antigo, que não corresponde aos requisitos de atualização utf8mb4 .

Mudei para outro servidor que atendesse a esses requisitos, mas o WP não iniciará mais essa atualização do banco de dados: /wp-admin/upgrade.php diz Your WordPress database is already up-to-date. Tentei definir minha wp_posttabela para utf8mb4 manualmente, mas todos os meus caracteres especiais se tornaram " ".

Alguma maneira de forçar o lançamento de maybe_convert_table_to_utf8mb4uma atualização simples, sem perder todos os meus caracteres especiais?

Obrigado!

Joan
fonte

Respostas:

5

Eu acho que a resposta para sua pergunta agora é "Não".

Não há maneira fácil de disparar maybe_convert_table_to_utf8mb4nos sites, uma vez que eles já foram atualizados além do WP 4.3 em um servidor que não atendeu aos requisitos estabelecidos nesta postagem:

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

Observe que, com base no código-fonte do WP, parece que eles mudaram isso da sequência de atualização do 4.2 para 4.3 (não está mais presente no 4.2, que agora não possui atualizações), talvez na esperança de atrair mais usuários.

Então essa é a sua resposta e é péssima, mas é mais precisa do que as outras. ¯_ (ツ) _ / ¯

No momento, estamos trabalhando para criar um script simples que permita ativar a essência da sequência de atualização com base em um gancho de ação. Se conseguirmos mantê-lo estável e funcionando, tentaremos voltar e compartilhá-lo aqui para que outros o usem.

Nosso plano básico é extrair a parte real do banco de dados upgrade_430(), isolá-lo do sistema de atualização do banco de dados e acioná-lo manualmente.

EDIT: SOLUÇÃO ABAIXO

Embora não haja uma maneira fácil de acionar o script, aqui está uma solução alternativa codificada à mão, baseada upgrade_430()mas projetada como uma apresentação.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

Você pode colocar isso em um plugin ou simplesmente colá-lo em seu functions.php. De qualquer maneira, deve ser TEMPORÁRIO.

Está configurado para disparar automaticamente quando você visita https://yoursite.com/?update-utf8bm4=1

Isso garante que ele seja executado apenas uma única vez e você poderá escolher quando (para bancos de dados grandes, pode demorar um pouco e você não quer que ninguém edite uma postagem enquanto ela estiver acontecendo).

Se você não deseja ativar o gatilho, remova a add_actionpeça e a if (!isset($_GET['update-utf8bm4']))peça.

Mais uma vez: REMOVA ESTE QUANDO COMPLETO, você não deseja deixar um gatilho GET como esse por aí :)

jerclarke
fonte
2

Claro, se for preciso dizer, faça um backup do banco de dados antes de tentar qualquer coisa, mas você trabalharia com a versão original do banco de dados - eu tentaria duas coisas: reparo e manutenção do banco de dados WordPress e as tabelas de otimização do phpMyAdmin:

Isso veio desta página, que contém muitas informações WP Knowledgebase , mas você começa adicionando esta linha ao wp-config.php do seu site:

define('WP_ALLOW_REPAIR', true);

acesse http://yoursite.com/wp-admin/maint/repair.php

Você deverá ver uma página com duas opções: 'Reparar banco de dados' e 'Reparar e otimizar banco de dados'.

Clique em 'Reparar e otimizar banco de dados' e aguarde o script ser executado. Depois de executados com êxito, você receberá mensagens de atualização informando o status de várias tabelas.

Assim que for executado, muito importante , remova a linha wp_allow_repair que você acabou de adicionar ao wp-config.php, exclua-a do arquivo wp-config.php.

Se isso não funcionar, você pode tentar a otimização da tabela do phpMyAdmin, mas se o WordPress não ajudou, também não. Eu tentaria na mesma versão do banco de dados em que você executou o último reparo.

Entre no phpMyAdmin, selecione seu banco de dados, role até a parte inferior da página, marque 'Check All' para selecionar todas as tabelas no banco de dados e selecione "Optimize Table" no menu de seleção ao lado. É isso, ele começará automaticamente.

Aqui estão mais detalhes e capturas de tela: WPMUDev

Se essas duas etapas não funcionarem - sozinhas ou juntas - você pode tentar usar outra cópia do seu banco de dados de backup para executá-las na ordem inversa ... Boa sorte!

Vanessa King
fonte
1
'Repara e otimiza o banco de dados'. relançar maybe_convert_table_to_utf8mb4(como qualquer atualização do WP faz)? Você não mencionou isso na resposta;)
Joan
Oi Joana, desculpe pela supervisão… não vi nenhuma menção específica nas notas, não, mas acho que sim, desde que você esteja executando a otimização no WordPress 4.2+. Das notas principais: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King
Tinha todas as tabelas UTF8 e executava o reparo e a otimização. Não os converteu em utf8mb4. Também tabelas que não eram MyIsam, mas InnoDB e já utf8mb4 não foram reparadas ou otimizadas.
rhand
Sim, isso não é uma resposta para a pergunta desculpe.
jerclarke
0

Você tentou alterar a tabela de banco de dados Collation? Por favor tente isto:

Entre no phpmyadmin> selecione seu banco de dados> Operações> agora mude o agrupamento do menu suspenso para "utf8mb4_unicode_ci" ou mude para o que foi usado no seu servidor antigo.

Espero que funcione para você.

veja a captura de tela: http://prntscr.com/8ip1ro/direct

Lembre-se: Se você exportar um arquivo sql do seu servidor antigo para o seu PC e o abrir com qualquer editor de texto ... e personalizar e salvar .. verifique se você salva o arquivo sql Editor de Texto "Encoding" é Utf-8 .. veja minha captura de tela: http://prntscr.com/8ip2nr/direct

obrigado

NoDiv_NoClass
fonte
Isto é o que eu tentei (também) como se estivesse lançando a função, os mesmos resultados (em todo lugar). Procurando uma maneira de relançar facilmente a função WP ...
Joan