129 votes

ERREUR 1114 (HY000) : La table est pleine

J'essaie d'ajouter une ligne à une table InnoDB avec une simple requête :

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

Mais lorsque je tente cette requête, j'obtiens le résultat suivant :

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

En effectuant un "SELECT COUNT(*) FROM zip_codes", j'obtiens 188 959 lignes, ce qui ne semble pas être un trop grand nombre si l'on considère que j'ai une autre table avec 810 635 lignes dans cette même base de données.

Je suis assez inexpérimenté avec le moteur InnoDB et je n'ai jamais rencontré ce problème avec MyISAM. Quels sont les problèmes potentiels ?

EDIT : Cela ne se produit que lors de l'ajout d'une ligne dans le tableau des codes postaux.

0 votes

L'erreur se produit-elle lorsque vous essayez d'insérer dans n'importe quelle table, ou seulement dans celle des codes postaux ?

104voto

Martin C. Points 2405

Vous semblez avoir une taille maximale trop faible pour votre système d'information. innodb_data_file_path dans votre my.cnf Dans cet exemple

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

vous ne pouvez pas héberger plus de 512 Mo de données dans toutes les tables innodb combinées.

Peut-être que vous devriez passer à un schéma innodb-par-table en utilisant innodb_file_per_table .

0 votes

C où on obtient ce fichier my.cnf dans ubuntu

3 votes

@Nadh Dans Ubuntu 16.04 c'est une partie de /etc/mysql/ et est partiellement divisé en fichiers supplémentaires dans /etc/mysql/conf.d

0 votes

Le mien a fonctionné après avoir ajouté le innodb_data_file_path ligne vers /etc/mysql/mysql.conf.d/mysqld.cnf et redémarrer le mysql y apache2 services

86voto

maaartinus Points 12510

Une autre raison possible est que la partition est pleine - c'est ce qui m'est arrivé.

1 votes

Cela devrait toujours être la première chose à vérifier. Revenez toujours au cordon d'alimentation, je suis tombé dessus de nombreuses fois.

1 votes

Vous m'avez fait gagner quelques heures en essayant de modifier la configuration de mysql. La partition primaire était pleine. J'ai dû déplacer la base de données mysql vers la partition de données, puis créer un lien logiciel.

3 votes

Utiliser df -h pour vérifier la taille du disque

27voto

Green Card Points 211

Vous obtiendrez également la même erreur ERROR 1114 (HY000) : La table '#sql-310a_8867d7f' est pleine.

si vous essayez d'ajouter un index à une table qui utilise le moteur de stockage MEMORY.

0 votes

Cela m'est arrivé mais il semble que mon client utilisait une mauvaise syntaxe. Lorsque l'on ajoute le même index avec un simple ALTER TABLE my_table ADD INDEX my_index (column_a, column_b); ça a marché.

25voto

hydrarulz Points 386

Vous devez modifier la limite définie dans my.cnf pour les tables INNO_DB. Cette limite de mémoire n'est pas définie pour les tables individuelles, elle est définie pour toutes les tables combinées.

Si vous voulez que la mémoire s'étende automatiquement jusqu'à 512 Mo.

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

Si vous ne connaissez pas la limite ou si vous ne voulez pas mettre de plafond, vous pouvez le modifier comme suit

innodb_data_file_path = ibdata1:10M:autoextend

Voici la documentation officielle de MySQL http://dev.mysql.com/doc/refman/4.1/en/adding-and-removing.html

0 votes

Nous avons hébergé notre ddbb sur Amazon et il était configuré avec autoextend. Mais nous avons eu le même problème qui, je suppose, était dû au fait que la limite de stockage configurée était atteinte.

11voto

skiphoppy Points 16563

Dans mon cas, c'était parce que la partition hébergeant le fichier ibdata1 était pleine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X