:: DEVELOPER ZONE
myisamchk é chamado desta forma:
shell> myisamchk [opções] nome_tabela
As opções especificam o que você deseja que o myisamchk faça. Elas
são descritas abaixo. (Você também pode obter a lista das opções com
myisamchk --help.) Sem opções, o myisamchk simplesmente checa sua
tabela. Para obter maiores informações ou dizer ao myisamchk para tomar
ações corretivas, especifique as opções descritas abaixo e nas seções seguintes.
nome_tabela é o nome da tabela do banco de dados que você deseja
verificar/reparar. Se você executar o myisamchk em algum lugar diferente do
diretório do banco de dados, você deve especificar o caminho para o arquivo, porque
myisamchk não faz idéia de onde seu banco de dados se encontra. Na verdade,
myisamchk não se importa se os arquivos estão localizados em um diretório de
banco de dado; você pode copiar os arquivos que correspondem a uma tabela de banco
de dados em outra localização e realizar neste outro lugar as operações corretivas.
Você pode nomear várias tabelas na linha de comando do myisamchk
se você desejar. Você também pode especificar um nome como um arquivo de índice
(com o sufixo .MYI), que lhe permite especificar todas tabelas em um
diretório utilizando o padrão *.MYI.
Por exemplo, se você está em um diretório de banco de dados, você pode checar
todas as tabelas no diretório desta forma:
shell> myisamchk *.MYI
Se você não estiver no diretório do banco de dados, você pode verificar todas as tabelas existentes especificando o caminho para o diretório:
shell> myisamchk /caminho/para/banco_de_dados/*.MYI
Você pode verificar todas as tabelas em todos os bancos de dados especificando um meta caracter com o caminho para o diretório de banco de dados do MySQL:
shell> myisamchk /caminho/para/diretório_dados/*/*.MYI
A maneira recomendada para conferir todas as tabelas rapidamente é:
myisamchk --silent --fast /caminho/para/diretório_dados/*/*.MYI isamchk --silent /caminho/para/diretório_dados/*/*.ISM
Se você quiser conferir todas as tabelas e reparar todas que estiverem corrompidas, pode utilizar linha a seguir:
myisamchk --silent --force --fast --update-state -O key_buffer=64M \
-O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \
/caminho/para/diretório_dados/*/*.MYI
isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M \
-O read_buffer=1M -O write_buffer=1M /caminho/para/diretório_dados/*/*.ISM
A linha acima assume que você tem mais de 64 MB de memória livre.
Perceba que se você obter um erro do tipo:
myisamchk: warning: 1 clients is using or hasn't closed the table properly
Isto significa que você está tentando verificar uma tabela que está sendo
atualizada por outro programa (como o servidor mysqld) que ainda não
fechou o arquivo ou que finalizou sem fechar o arquivo corretamente.
Se o mysqld está em execução, você deve forçar o sincronimo e
fechamento de todas tabelas com FLUSH TABLES e assegurar que ninguém
mais esteja utilizando as tabelas quando for executar o myisamchk.
No MySQL versão 3.23 a forma mais simples de evitar este problema é utilizar
CHECK TABLE no lugar de myisamchk para verificar as tabelas.
© 1995-2005 MySQL AB. All rights reserved.
