Invoque myisamchk de la siguiente manera:
shell> myisamchk [opciones
]tbl_name
Las options
especifican lo que
quiere que myisamchk haga. Se describen en
las secciones posteriores. También puede obtener una lista de
las opciones invocando myisamchk --help.
Sin opciones, myisamchk simplemente comprueba la tabla, como operación por defecto. Para obtener más información, o decirle a myisamchk que tome medidas correctivas, especifique las opciones tal como se explica en la siguiente guía.
tbl_name
es el nombre de la tabla
que quiere comprobar o reparar. Si ejecuta
myisamchk desde otro lugar que no sea el
directorio de la base de datos, debe especificar la ruta hasta
este directorio, porque myisamchk no tiene
la más mínima idea de en qué lugar se encuentra la base de
datos. De hecho, myisamchk no se preocupa
por si los archivos sobre los que trabaja se encuentran en un
directorio de base de datos. Puede copiar los archivos que
corresponden a la tabla en cualquier otro lugar, y hacer las
operaciones de recuperación allí.
Puede invocar varios nombres de tablas en la línea de
comandos de myisamchk, si lo desea.
También puede especificar una tabla nombrando a su archivo de
índices (el archivo con extensión
.MYI
). Esto permite que especifique todas
las tablas de un directorio utilizando el patrón
*.MYI
. Por ejemplo, si se encuentra en un
directorio de una base de datos, puede comprobar todas las
tablas MyISAM
de ese directorio de la
siguiente manera:
shell> myisamchk *.MYI
Si no se encuentra en el directorio de la base de datos, puede comprobar todas las tablas especificando la ruta al directorio:
shell> myisamchk /path/to/database_dir/*.MYI
Incluso se podría comprobar todas las tablas en todas las bases de datos especificando un comodín en la ruta a el archivo de datos MySQL:
shell> myisamchk /path/to/datadir/*/*.MYI
La manera recomendada de comprobar rápidamente todas las
tablas MyISAM
e ISAM
es:
shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI shell> isamchk --silent /path/to/datadir/*/*.ISM
Si usted quiere comprobar todas las tablas
MyISAM
e ISAM
y
repararlas si alguna está corrompida, puede utilizar los
siguientes comandos:
shell> myisamchk --silent --force --fast --update-state \ -O key_buffer=64M -O sort_buffer=64M \ -O read_buffer=1M -O write_buffer=1M \ /path/to/datadir/*/*.MYI shell> isamchk --silent --force -O key_buffer=64M \ -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \ /path/to/datadir/*/*.ISM
Estos comandos asumen que tiene más de 64MB libres. Para más información sobre reserva de memoria con myisamchk, consulte Sección 5.8.3.6, “Utilización de la memoria por parte de myisamchk”.
Debe asegurarse de que ningún otro programa está utilizando las tablas mientras ejecute myisamchk. Si no es así, cuando ejecute myisamchk, puede obtener el siguiente mensaje de error:
warning: clients are using or haven't closed the table properly
Esto significa que está intentando comprobar una tabla que ha sido cambiada por otro programa (como podría ser el servidor mysqld) que no ha cerrado aún el archivo, o que ha muerto sin cerrar el archivo adecuadamente.
Si mysqld se está ejecutando, debe
forzarlo a volcar cualquier modificación de tablas que
todavía esté almacenada en memoria, utilizando
FLUSH TABLES
. Debería entonces asegurarse
de que nadie está utilizando las tablas sobre las que se
ejecuta myisamchk. La manera más fácil de
evitar este problema es utilizar CHECK
TABLE
en vez de myisamchk para
comprobar las tablas.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.