Como muitos de vocês sabem que este blog é executado no WordPress e sob o capô do WordPress existe um banco de dados MySQL. O banco de dados MySQL é muito bom e é capaz de manter o tráfego massivo que este blog recebe todos os dias. No entanto, assim como qualquer banco de dados MySQL necessita de ajustes, bem como gerenciamento adequado do mesmo. Nesta postagem do blog, discutiremos sobre como recebi um erro muito estranho Erro de banco de dados do WordPress e como o resolvi.
Na semana passada, de repente, recebi uma ligação de um amigo informando que nosso blog está carregando muito devagar. Bem, quando uma nova postagem no blog é publicada ou uma newsletter é enviada, é muito comum ver um pico no tráfego e uma lentidão momentânea no desempenho do site. No entanto, neste caso, o site estava constantemente ficando lento. Depois de um tempo, encontramos alguns novos problemas no site. Devido à lentidão do desempenho, também descobrimos que o agendador do WordPress não estava publicando novas postagens no blog, bem como não estava fazendo backup de rotina do sistema.
Após um diagnóstico cuidadoso, descobri que o problema estava no banco de dados MySQL. Quando verifiquei o log de erros, encontrei o seguinte erro no log.
[Fri Sep 09 04:58:03 2016] [error] [client] Erro de banco de dados WordPress Duplicar entrada '3354142' para chave 'PRIMARY' para consulta INSERT INTO wp_options (option_name , option_value,autoload) VALUES (…)
Ficou muito claro que havia uma violação de chave primária na tabela de opções. No entanto, o problema não foi fácil de resolver, pois eu pessoalmente não havia feito nenhuma transação com esta tabela ou não havia novas atualizações ou alterações de plugins nos últimos tempos. Minha primeira tentativa foi restaurar essa tabela específica do backup de banco de dados mais antigo (faço backup frequente do meu site e do banco de dados). Mesmo esse problema específico falhou e não consegui me livrar do erro.
Finalmente, pesquisei na internet, mas, infelizmente, não houve ajuda real. Naquela época, decidi fazer várias tentativas e erros. Confie em mim, eu gasto mais de 4 horas e vários truques diferentes para me livrar desse erro. Ficou muito claro para mim que era um erro de integridade lógica no banco de dados, tive que gastar tempo com muitas tabelas e lógica. Bem, depois de 4 horas, finalmente encontrei uma solução e foi uma solução muito simples. Eu gostaria de ter sabido disso antes e não ter gasto mais de 4 horas em várias tentativas e erros.
Solução/Correção:
Acabei de executar o seguinte comando e meu problema foi resolvido.
REPAIR TABLE wp_options
É isso aí! Foi feito.
A realidade era que minha tabela estava corrompida e, devido ao mesmo motivo, estava recebendo um erro relacionado à Duplicate Key para minha tabela de banco de dados. Depois que consertei a corrupção da tabela, tudo funcionou bem. Lembre-se, no meu caso, foi a tabela wp_options que foi corrompida, você deve substituí-la pelo nome da sua tabela e o script funcionará bem.
Além disso, se você quiser apenas reparar todas as tabelas em seu banco de dados, você pode executar o seguinte script e ele gerará scripts para cada tabela em seu banco de dados MySQL. Depois de executar o script, você reparará todas as tabelas do seu banco de dados.
SELECT CONCAT('repair table ', table_name, ';') FROM information_schema.tables WHERE table_schema='YourDatabaseName';
Espero que você ache esta postagem do blog útil. Se você tiver algum problema com o banco de dados MySQL do WordPress, entre em contato comigo, ficarei feliz em ajudá-lo a resolver qualquer erro relacionado ao mesmo.