Recibí el siguiente error de una consulta MySQL.
#126 - Incorrect key file for table
Ni siquiera he declarado una clave para esta tabla, pero tengo índices. ¿Alguien sabe cuál podría ser el problema?
mysql
mysql-error-126
Brian
fuente
fuente
REPAIR TABLE
y sigue obteniendo esto, además de que hay espacio/tmp
, es posible que desee intentar reiniciar el servidor.Respuestas:
Cada vez que esto ha sucedido, ha sido un disco lleno en mi experiencia.
EDITAR
También vale la pena señalar que esto puede ser causado por un ramdisk completo al hacer cosas como alterar una tabla grande si tiene un ramdisk configurado. Puede comentar temporalmente la línea ramdisk para permitir tales operaciones si no puede aumentar su tamaño.
fuente
/tmp
hay un pequeño sistema de archivos tmpfs y mysql se quedó sin espacio escribiendo una tabla temporal allí. Tuve que configurar latmpdir
variable de configuración como se menciona en mysql.comEn primer lugar, debe saber que las claves y los índices son sinónimos en MySQL. Si observa la documentación sobre la sintaxis CREATE TABLE , puede leer:
Ahora, el tipo de error que está recibiendo puede deberse a dos cosas:
En el primer caso, verá que agregar un límite a su consulta podría resolver el problema temporalmente. Si eso es suficiente para usted, probablemente tenga una
tmp
carpeta que sea demasiado pequeña para el tamaño de las consultas que está tratando de hacer. A continuación, puede decidir hacertmp
más grande o hacer sus consultas más pequeñas. ;)A veces,
tmp
es lo suficientemente grande pero aún se llena, necesitará hacer una limpieza manual en estas situaciones.En el segundo caso, existen problemas reales con los datos de MySQL. Si puede volver a insertar los datos fácilmente, le aconsejo que simplemente suelte / vuelva a crear la tabla y vuelva a insertar los datos. Si no puede, intente reparar la mesa en su lugar con la mesa REPAIR . Es un proceso generalmente largo que bien podría fallar.
Mire el mensaje de error completo que recibe:
Menciona en el mensaje que puede intentar repararlo. Además, si observa el FILEPATH real que obtiene, puede encontrar más:
si es algo así
/tmp/#sql_ab34_23f
, significa que MySQL necesita crear una tabla temporal debido al tamaño de la consulta. Lo almacena en / tmp, y no hay suficiente espacio en su / tmp para esa tabla temporal.si contiene el nombre de una tabla real en su lugar, significa que es muy probable que esta tabla esté dañada y que debería repararla.
Si identifica que su problema es con el tamaño de / tmp, simplemente lea esta respuesta a una pregunta similar para la solución: MySQL, Error 126: Archivo de clave incorrecto para la tabla .
fuente
Seguir estas instrucciones me permitió volver a crear mi directorio tmp y solucionar el problema:
Muestra todos los sistemas de archivos y su uso de disco en forma legible por humanos:
Encuentre los procesos que tienen archivos abiertos en
/tmp
Luego desmonte
/tmp
y/var/tmp
:Luego elimine el archivo de partición corrupto:
Luego crea uno nuevo y agradable:
Tenga en cuenta que al editar el script de Securetmp Perl, usted mismo puede establecer manualmente el tamaño del directorio tmp, sin embargo, con solo ejecutar el script, el tamaño del directorio tmp en nuestro servidor aumentó de aproximadamente 450 MB a 4,0 GB.
fuente
El error # 126 generalmente ocurre cuando tiene una tabla corrupta. La mejor forma de solucionar este problema es realizar una reparación. Este artículo puede ayudar:
http://dev.mysql.com/doc/refman/5.0/en/repair-table.html
fuente
Tengo este error cuando me puse
ft_min_word_len = 2
enmy.cnf
, lo que disminuye la longitud de palabra mínima en un índice de texto completo a los 2, cuyo valor predeterminado es 4.La reparación de la mesa solucionó el problema.
fuente
Intente utilizar el límite en su consulta. Es por el disco lleno como dijo @Monsters X.
También me enfrenté a este problema y lo resolví por límite en la consulta, porque los miles de registros estaban allí. Ahora funciona bien :)
fuente
Sé que este es un tema antiguo, pero ninguna de las soluciones mencionadas funcionó para mí. He hecho algo más que funcionó:
Necesitas:
fuente
fuente
Solucioné este problema con:
Puede ayudar
fuente
table
ENGINE = MyISAM;Ir a
/etc/my.cnf
y comentartmpfs
Esto soluciona el problema.
Ejecuté el comando sugerido en otra respuesta y, aunque el directorio es pequeño, estaba vacío, por lo que el problema no era el espacio.
fuente
Intente ejecutar un comando de reparación para cada una de las tablas involucradas en la consulta.
Use el administrador de MySQL, vaya a Catálogo -> Seleccione su catálogo -> Seleccione una tabla -> Haga clic en el botón Mantenimiento -> Reparar -> Usar FRM.
fuente
Ahora, las otras respuestas me lo resolvieron. Resulta que cambiar el nombre de una columna y un índice en la misma consulta provocó el error.
No funciona:
Obras (2 declaraciones):
Esto fue en MariaDB 10.0.20. No hubo errores con la misma consulta en MySQL 5.5.48.
fuente
Entonces existe un error:
mysql> tabla de reparación f_scraper_banner_details;
Esto funcionó para mi
fuente
Mi problema provino de una mala consulta. Hice referencia a una tabla en FROM y no se hizo referencia en SELECT.
ejemplo:
, users u
es lo que me estaba causando el problema. Eliminar eso resolvió el problema.Como referencia, esto fue en un entorno de desarrollo CodeIgniter.
fuente
Recibí este mensaje al escribir en una tabla después de reducir ft_min_word_len (longitud de palabra mínima de texto completo). Para solucionarlo, vuelva a crear el índice reparando la tabla.
fuente
mysqlcheck -r -f -uroot -p --use_frm nombre_bd
normalmente hará el truco
fuente