Como verificar todas as tabelas do banco de dados de uma vez?
Em vez de digitar a consulta check table ''tablename'';
para todas as tabelas, uma por uma.
Existe algum comando simples como check all
ou algo parecido?
na linha de comando, você pode usar:
mysqlcheck -A --auto-repair
O comando é este:
mysqlcheck -u root -p --auto-repair --check --all-databases
Você deve fornecer a senha quando solicitado,
ou você pode executar este, mas não é recomendado porque a senha é escrita em texto simples:
mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases
Use a seguinte consulta para imprimir as
REPAIR
instruções SQL para todas as tabelas dentro de um banco de dados:Depois disso, copie todas as consultas e execute-as no
mydatabase
.Nota: substitua
mydatabase
pelo nome do banco de dados desejadofonte
Não há necessidade de digitar a senha, basta usar qualquer um destes comandos (autoexplicativo):
fonte
O seguinte comando funcionou para mim usando o prompt de comando (como administrador) no Windows:
Execute mysqlcheck com o usuário root, solicite uma senha, verifique todos os bancos de dados e repare automaticamente quaisquer tabelas corrompidas.
fonte
Não existe um comando padrão para fazer isso, mas você pode criar um procedimento para fazer o trabalho. Ele irá iterar por meio de linhas de
information_schema
e chamarREPAIR TABLE 'tablename';
cada linha.CHECK TABLE
ainda não tem suporte para declarações preparadas. Aqui está o exemplo (substitua MYDATABASE pelo nome do seu banco de dados):fonte
Eu gosto disso para uma verificação simples do shell:
fonte
mysql -ss
para omitir os nomes das colunas da saída - isso permitiria removerNR != 1
do seu códigopara hosts plesk, um destes deve fazer: (ambos fazem o mesmo)
fonte
Você pode precisar de nome de usuário e senha:
Será solicitada a senha.
Se você quiser colocar no cron, MAS sua senha ficará visível em texto simples!
fonte
Se as tabelas corrompidas permanecerem após
experimentar
fonte