2009-04-08 17 views
69

Estoy intentando agregar una fila a una tabla InnoDB con una simple consulta:ERROR 1114 (HY000): La mesa está llena

INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills'); 

Pero cuando intento esta consulta, me sale el siguiente:

ERROR 1114 (HY000): The table `zip_codes` is full 

Haciendo un "SELECT COUNT (*) a partir de zip_codes" me da 188.959 filas, que no parece ser demasiado teniendo en cuenta que tengo otra tabla con 810,635 filas de esa misma base de datos.

Tengo bastante inexperiencia con el motor InnoDB y nunca he tenido este problema con MyISAM. ¿Cuáles son algunos de los posibles problemas aquí?

EDITAR: Esto solo ocurre al agregar una fila a la tabla zip_codes.

+0

¿Se produce el error cuando intenta insertar en cualquier tabla, o solo en zip_codes? –

Respuesta

64

EDIT: primer cheque, si no se queda sin espacio en disco, antes de resolver la resolución relacionada con la configuración.

Usted parece tener 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 combinados.

Tal vez deberías cambiar a un esquema innodb-por-tabla usando innodb_file_per_table.

+0

C donde obtenemos este archivo my.cnf en ubuntu –

+2

@Nadh En Ubuntu 16.04 es parte de '/ etc/mysql /' y está parcialmente dividido en archivos adicionales en '/ etc/mysql/conf.d' –

2

Para citar los documentos de MySQL.

The InnoDB storage engine maintains InnoDB tables within a tablespace that can be created from several files. This allows a table to exceed the maximum individual file size. The tablespace can include raw disk partitions, which allows extremely large tables. The maximum tablespace size is 64TB.

If you are using InnoDB tables and run out of room in the InnoDB tablespace. In this case, the solution is to extend the InnoDB tablespace. See Section 13.2.5, [“Adding, Removing, or Resizing InnoDB Data and Log Files”.]

5

A menos que habilite la opción innodb_file_per_table, InnoDB mantiene todos los datos en un solo 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.

0

Esto 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

at 1024 transactions, that have undo records (as in, edited any data), InnoDB will fail to work

14

resulta necesario modificar la tapa límite establecido en my.cnf para las mesas 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 de 512 MB autoextend

innodb_data_file_path = ibdata1:10M:autoextend:max:512M 

Si usted no sabe el límite o no quiere poner un tope límite, puede modificarlo como esto

innodb_data_file_path = ibdata1:10M:autoextend 
+0

Alojamos nuestro ddbb en Amazon y se configuró con autoextend.Pero tuvimos el mismo problema que supongo que fue debido a alcanzar el límite almacenado configurado. – borjab

8

En mi caso, esto se debía a que la partición que alojaba el archivo ibdata1 estaba llena.

22

También se obtiene el mismo error ERROR 1114 (HY000): La tabla '# sql-310a_8867d7f' está lleno

si intenta añadir un índice a una tabla que está utilizando la memoria de almacenamiento del motor.

68

Otra posible razón es que la partición está llena, esto es lo que me sucedió a mí ahora.

+1

Esto siempre debe ser lo primero que verifique. Siempre vuelva al cable de alimentación, me he topado con esto muchas veces. –

+1

Me salvaste algunas horas intentando cambiar la configuración de mysql. La partición primaria estaba llena. Tuvo que mover la base de datos mysql a la partición de datos y luego crear un enlace suave –

9

Este error también aparece si la partición en la que reside tmpdir llena (debido a una modificación de tabla u otro

7

Si utiliza NDBCLUSTER como motor de almacenamiento, debe aumentar DataMemory y IndexMemory.

Mysql FQA

8

Puede que se esté quedando sin espacio, ya sea en la partición donde se almacenan las tablas mysql (generalmente/var/lib/mysql) o en donde están almacenadas 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.

3

que habían: SQLSTATE [HY000]: Error general: 1114 La tabla 'catalog_product_index_price_bundle_sel_tmp' está lleno

resuelto por:

edición de configuración de DB: /etc/my.cnf

nano

tmp_table_size = 256M max_heap_table_size = 256M

  • reiniciar db
+1

Esas configuraciones de 512M son peligrosas. Controlan el tamaño máximo de memoria para tablas temporales en selecciones complejas. No es solo "por conexión", sino también "por tabla de tmp". Entonces, esos valores podrían fácilmente hacer que se quede sin memoria RAM. –

1

En mi caso, la memoria del servidor estaba llena, por lo que el DB no pudo escribir los datos de temperatura. Para resolverlo solo tiene que hacer un lugar en su disco.

0

En CentOS 7 simplemente deteniendo e iniciando el servicio de MySQL solucionado esto por mí.

sudo service mysql stop

sudo service mysql start

6

yo también enfrentaron este error al importar un archivo de base de datos SQL de 8 GB. Comprobé la unidad de instalación de mi mysql. No quedaba espacio en el disco. Así conseguí algo de espacio eliminando elementos no deseados y volví a ejecutar el comando de importación de la base de datos. Esta vez fue un éxito.

1

Me enfrenté al 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.

1

Estaba teniendo este problema ... en mi caso, me había quedado 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.

Cuestiones relacionadas