Estoy tratando de agregar una fila a una InnoDB
tabla 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): La mesa
zip_codes
está llena
Haciendo un
SELECT COUNT(*) FROM zip_codes
me da 188,959 filas, que no parecen demasiadas considerando que tengo otra tabla con 810,635 filas en esa misma base de datos.
Soy bastante inexperto con el InnoDB engine
y nunca experimenté este problema con MyISAM
. ¿Cuáles son algunos de los posibles problemas aquí?
EDITAR: Esto solo ocurre cuando se agrega una fila a la zip_codes
tabla.
Respuestas:
EDITAR: Primero verifique, si no se quedó sin espacio en disco, antes de resolver la resolución relacionada con la configuración.
Parece tener un tamaño máximo demasiado bajo para su
innodb_data_file_path
en sumy.cnf
, En este ejemplono puede alojar más de 512 MB de datos en todas las tablas innodb combinadas.
Tal vez debería cambiar a un esquema innodb-per-table usando
innodb_file_per_table
.fuente
/etc/mysql/
y se divide parcialmente en archivos adicionales en/etc/mysql/conf.d
innodb_data_file_path
línea/etc/mysql/mysql.conf.d/mysqld.cnf
y reiniciar los serviciosmysql
yapache2
Otra posible razón es que la partición está llena, esto es lo que me pasó ahora.
fuente
df -h
para comprobar el tamaño del discoTambié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á usando el motor de almacenamiento MEMORY.
fuente
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
funcionó.Debe modificar el límite de límite establecido en my.cnf para las tablas INNO_DB. Este límite de memoria no se establece para tablas individuales, se establece para todas las tablas combinadas.
Si desea que la memoria se extienda automáticamente a 512 MB
Si no conoce el límite o no quiere poner un límite máximo, puede modificarlo así
fuente
Este error también aparece si la partición en la que
tmpdir
reside se llena (debido a una tabla alterada u otrafuente
En mi caso, esto se debió a que la partición que alojaba el archivo ibdata1 estaba llena.
fuente
Es posible que se esté quedando sin espacio en la partición donde se almacenan las tablas mysql (generalmente / var / lib / mysql) o 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 reiniciar el servidor.
fuente
Yo también enfrenté este error al importar un archivo de base de datos sql de 8GB. Revisé mi unidad de instalación de mysql. No quedaba espacio en el camino. Así que obtuve algo de espacio eliminando elementos no deseados y volví a ejecutar el comando de importación de mi base de datos. Esta vez fue un éxito.
fuente
Si usa NDBCLUSTER como motor de almacenamiento, debe aumentar
DataMemory
yIndexMemory
.Mysql FQA
fuente
A menos que haya habilitado la
innodb_file_per_table
opción,InnoDB
mantiene todos los datos en un archivo, generalmente llamadoibdata1
.Verifique el tamaño de ese archivo y verifique que tenga suficiente espacio en disco en la unidad en la que reside.
fuente
teníamos: SQLSTATE [HY000]: Error general: 1114 La tabla 'catalog_product_index_price_bundle_sel_tmp' está llena
resuelto por:
editar configuración de db:
nano /etc/my.cnf
tmp_table_size = 256M max_heap_table_size = 256M
fuente
Para citar los documentos MySQL.
fuente
en mi caso, es solo porque el servidor mysql se ejecuta junto con una aplicación, que escribe demasiados registros que el disco está lleno.
puede comprobar si el disco tiene suficiente espacio de uso
si el porcentaje de uso del disco es del 100%, puede usar este comando para encontrar qué directorio es demasiado grande
fuente
USUARIOS DE DOCKER: Esto también sucede cuando ha alcanzado alrededor del 90% del límite de tamaño de la imagen de Docker (parece que se necesita un 10% para el almacenamiento en caché). La redacción es confusa, ya que esto simplemente significa la cantidad de espacio en disco que Docker puede usar para básicamente todo.
Para solucionarlo, vaya a la configuración del escritorio de Docker> Disco> mueva el control deslizante un poco más hacia la derecha> Aplicar.
fuente
En CentOS 7, simplemente detener e iniciar el servicio MySQL solucionó esto por mí.
sudo service mysql stop
sudo service mysql start
fuente
Enfrenté el mismo problema debido al poco espacio en disco. Y la partición que aloja el archivo ibdata1, que es el espacio de tabla del sistema para la infraestructura InnoDB, estaba llena.
fuente
Estaba experimentando este problema ... en mi caso, me quedaría sin almacenamiento en mi servidor dedicado. Compruebe que si todo lo demás falla y considere aumentar el espacio en disco o eliminar datos o archivos no deseados.
fuente
En mi caso, la memoria del servidor estaba llena, por lo que la base de datos no pudo escribir los datos temporales. Para solucionarlo solo tienes que hacer un hueco en tu disco.
fuente
Solucioné este problema aumentando la cantidad de memoria disponible para la VM vagabunda donde se encontraba la base de datos.
fuente
En mi caso, estaba intentando ejecutar un comando alter table y el espacio disponible en disco era menor que el tamaño de la tabla. Una vez que aumenté el espacio en disco, el problema desapareció.
fuente
Este disco está lleno en / var / www / mysql
fuente
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
fuente