Solución al error Can’t create new tempfile al reparar tabla en MySQL

Can’t create new tempfile es un error que marca después de intentar reparar la tabla de una base de datos en MySQL por un fallo al no terminar el proceso completo de revisión debido a algún tipo de desconexión con el servidor.

Reparar y optimizar las tablas de una base de datos en MySQL desde la terminal suele ser un proceso efectivo y de lo más recomendable, sin embargo, también podemos toparnos con errores a la hora de realizar el proceso al no terminar por completo la comprobación de una tabla.

Precaución

Antes de reparar las tablas de una base de datos es recomendable hacer una copia de seguridad de la misma.

Can’t create new tempfile, el error

Ejemplo de ello es el siguiente mensaje:

1
2
3
4
5
mysqlcheck -r basededatos tabla -uespaciolinux -p      
Enter password:
basededatos.tabla
error    : Can't create new tempfile: './basededatos/tabla.TMD'
status   : Operation failed

A través del comando mysqlcheck intente reparar la tabla de la basededatos utilizando el usuario espaciolinux mas no se pudo lograr y en su lugar mando el mensaje Can’t create new tempfile seguido de la ruta donde se encuentra la tabla.

Utilizando myisamchk como solución

Para dar solución y corregir el problema vamos a utilizar el comando myisamchk y varios argumentos los cuales se desglosan de la siguiente manera:

  • myisamchk – Comando principal
  • -r – Opción de reparar
  • -f – Forzar la reparación
  • -o – Utiliza un método antiguo de reparación en caso de que falle la opción -r

Antes de realizar el procedimiento debemos detener el servicio de MySQL:

1
sudo service mysql stop

Reparando la tabla MySQL y corrigiendo el error.

Realizada la acción anterior y tomando como base una instalación estándar de MySQL procederemos a ejecutar nuestro comando en la ruta donde se encuentra la base datos y la tabla con el error, que sería en /var/lib/mysql/basededatos/tabla:

1
sudo myisamchk -r -f -o /var/lib/mysql/basededatos/tabla

Se utilizará sudo solo en caso de no permitir la acción por no tener los permisos suficiente.

El proceso puede tardar algún tiempo en realizarse dependiendo del tamaño de la tabla. El resultado si es satisfactorio se verá más o menos así:

1
2
- recovering (with keycache) MyISAM-table '/var/lib/mysql/basededatos/tabla'
Data records: 279986

Completado procedemos a iniciar nuevamente el servicio de MySQL:

1
sudo service mysql start

 Can't create new tempfile solucionado con myisamchk
Can’t create new tempfile solucionado con myisamchk

Más información sobre myisamchk

Para conocer más de myisamchk se puede consultar vía web en la pagina de MySQL o bien, utilizando alguno de los siguiente comando en la terminal:

1
2
myisamchk --help
man myisamchk

Sitios de interés:

Sitio oficial MySQL | dev.mysql.com

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.