mysql - the - ERROR 1114(HY000): la tabla está llena
error usr sbin mysqld the table is full (17)
A menos que habilite la opción innodb_file_per_table
, InnoDB
conserva todos los datos en un archivo, generalmente llamado ibdata1
.
Compruebe el tamaño de ese archivo y compruebe que tiene suficiente espacio en disco en la unidad en la que reside.
Estoy tratando de agregar una fila a una tabla InnoDB con una simple consulta:
INSERT INTO zip_codes (zip_code, city) VALUES (''90210'', ''Beverly Hills'');
Pero cuando intento esta consulta, obtengo lo siguiente:
ERROR 1114 (HY000): The table `zip_codes` is full
Hacer un "SELECT COUNT (*) FROM zip_codes" me da 188,959 filas, lo que no parece ser demasiado, considerando que tengo otra tabla con 810,635 filas en esa misma base de datos.
No tengo mucha experiencia con el motor InnoDB y nunca tuve este problema con MyISAM. ¿Cuáles son algunos de los posibles problemas aquí?
EDITAR: Esto solo ocurre cuando se agrega una fila a la tabla zip_codes.
Debe modificar el límite de límite establecido en my.cnf para las tablas INNO_DB. Este límite de memoria no está establecido para tablas individuales, se establece para todas las tablas combinadas.
Si desea que la memoria se extienda automáticamente a 512 MB
innodb_data_file_path = ibdata1:10M:autoextend:max:512M
Si no conoce el límite o no quiere poner un tope límite, puede modificarlo de esta manera
innodb_data_file_path = ibdata1:10M:autoextend
En CentOS 7 simplemente detener e iniciar el servicio MySQL solucionó esto por mí.
sudo service mysql stop
sudo service mysql start
En mi caso, esto se debía a que la partición que alojaba el archivo ibdata1 estaba llena.
En mi caso, la memoria del servidor estaba llena, por lo que el DB no pudo escribir los datos temporales. Para resolverlo solo tienes que hacer un lugar en tu disco.
Enfrenté el mismo problema debido al bajo espacio en disco. Y la partición que hospeda el archivo ibdata1, que es el espacio de tabla del sistema para la infraestructura de InnoDB, estaba llena.
Es posible que se esté quedando sin espacio, ya sea en la partición donde se almacenan las tablas de mysql (generalmente / var / lib / mysql) o en el lugar donde se almacenan las tablas temporales (generalmente / tmp).
Es posible que desee: - controlar su espacio libre durante la creación del índice. - apunte la variable tmpdir MySQL a una ubicación diferente. Esto requiere un reinicio del servidor.
Estaba experimentando este problema ... en mi caso, me quedé sin almacenamiento en mi servidor dedicado. Compruebe si todo lo demás falla y considere aumentar el espacio en disco o eliminar datos o archivos no deseados.
Este error también aparece si la partición en la que reside el tmpdir
llena (debido a una tabla tmpdir
u otra
Este también podría ser el límite de InnoDB para el número de transacciones abiertas:
http://bugs.mysql.com/bug.php?id=26590
en 1024 transacciones, que tienen registros de deshacer (como en, editado cualquier dato), InnoDB no funcionará
Otra posible razón es que la partición está llena, esto es lo que me sucedió a mí ahora.
Para citar los documentos MySQL.
El motor de almacenamiento InnoDB mantiene tablas InnoDB dentro de un tablespace que se puede crear a partir de varios archivos. Esto permite que una tabla exceda el tamaño máximo de archivo individual. El tablespace puede incluir particiones de disco sin procesar, lo que permite tablas extremadamente grandes. El tamaño máximo del tablespace es 64TB.
Si está utilizando tablas InnoDB y se está quedando sin espacio en el espacio de tabla InnoDB. En este caso, la solución es extender el espacio de tabla InnoDB. Consulte la Sección 13.2.5, ["Cómo agregar, eliminar o cambiar el tamaño de los datos y archivos de registro de InnoDB"].
Si usa NDBCLUSTER como motor de almacenamiento, debe aumentar DataMemory
e IndexMemory
.
También obtendrá el mismo error ERROR 1114 (HY000): La tabla ''# sql-310a_8867d7f'' está llena
si intenta agregar un índice a una tabla que está utilizando el motor de almacenamiento MEMORY.
Tuvimos: SQLSTATE [HY000]: Error general: 1114 La tabla ''catalog_product_index_price_bundle_sel_tmp'' está llena
resuelto por:
editar la configuración de db:
nano /etc/my.cnf
tmp_table_size = 256M max_heap_table_size = 256M
- reiniciar db
Yo también enfrenté este error al importar un archivo de base de datos de 8GB sql. Comprobé la unidad de instalación de mi mysql. No quedaba espacio en el disco. Así que obtuve algo de espacio al eliminar elementos no deseados y volví a ejecutar el comando de importación de mi base de datos. Esta vez fue exitoso.
EDITAR: Primero compruebe, si no se quedó sin espacio en disco, antes de resolver la resolución relacionada con la configuración.
Parece que tiene un tamaño máximo demasiado bajo para su innodb_data_file_path
en su my.cnf
, en este ejemplo
innodb_data_file_path = ibdata1:10M:autoextend:max:512M
no puede alojar más de 512 MB de datos en todas las tablas innodb combinadas.
Tal vez deberías cambiar a un esquema innodb-por-tabla usando innodb_file_per_table
.