133 votes

1114 (HY000): La table est pleine

Je cherche à ajouter une ligne à une table InnoDB avec une requête simple :

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

Mais quand j'essaie cette requête, j'obtiens ce qui suit :

ERREUR 1114 (HY000) : La table zip_codes est pleine

En faisant un

SÉLECTIONNER COUNT(*) FROM zip_codes

cela me donne 188 959 lignes, ce qui ne semble pas être un nombre trop élevé étant donné que j'ai une autre table avec 810 635 lignes dans la 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 certains des problèmes potentiels ici ?

ÉDIT : Cela se produit uniquement lors de l'ajout d'une ligne à la table zip_codes.

0 votes

Le problème se produit-il lorsque vous essayez d'insérer dans n'importe quelle table, ou seulement dans celle des codes postaux?

107voto

Martin C. Points 2405

EDIT: Première vérification, si vous n'avez pas manqué d'espace disque, avant de recourir à la résolution liée à la configuration.

Il semble que vous ayez une taille maximale trop faible pour votre 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 l'ensemble des tables innodb combinées.

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

0 votes

Où obtenir le fichier my.cnf dans Ubuntu ?

3 votes

@Nadh Dans Ubuntu 16.04, il fait partie de /etc/mysql/ et est partiellement divisé en fichiers supplémentaires dans /etc/mysql/conf.d

0 votes

La mienne a fonctionné après avoir ajouté la ligne innodb_data_file_path dans le fichier /etc/mysql/mysql.conf.d/mysqld.cnf et redémarré les services mysql et apache2

91voto

maaartinus Points 12510

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

1 votes

Cela devrait toujours être la première chose à vérifier. Revenez toujours au cordon d'alimentation, j'ai rencontré ce problème plusieurs fois.

1 votes

Vous m'avez sauvé quelques heures en essayant de changer la configuration mysql. La partition principale était pleine. J'ai dû déplacer la base de données mysql vers la partition des données, puis créer un lien symbolique.

3 votes

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

27voto

Green Card Points 211

Vous obtiendrez également la même erreur ERREUR 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 semblait que mon client utilisait une syntaxe incorrecte. Lorsque j'ai ajouté le même index avec un simple ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);, cela a fonctionné.

25voto

hydrarulz Points 386

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

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

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

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

innodb_data_file_path = ibdata1:10M:autoextend

1 votes

Nous avons hébergé notre ddbb sur Amazon et elle était configurée avec autoextend. Mais nous avons eu le même problème que je suppose était dû à l'atteinte de la limite de stockage configurée.

11voto

skiphoppy Points 16563

Dans mon cas, cela était dû au fait 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