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.
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 |

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