J'essaye d'ajouter une ligne à une InnoDB
table avec une simple requête:
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Mais lorsque j'essaye cette requête, j'obtiens ce qui suit:
ERREUR 1114 (HY000): la table
zip_codes
est pleine
Faire un
SELECT COUNT(*) FROM zip_codes
me donne 188 959 lignes, ce qui ne semble pas trop nombreux étant donné que j'ai une autre table avec 810 635 lignes dans cette même base de données.
Je suis assez inexpérimenté avec InnoDB engine
et je n'ai jamais rencontré ce problème avec MyISAM
. Quels sont certains des problèmes potentiels ici?
EDIT: Cela se produit uniquement lors de l'ajout d'une ligne à la zip_codes
table.
Réponses:
EDIT: Vérifiez d'abord, si vous n'avez pas manqué d'espace disque, avant de résoudre la résolution liée à la configuration.
Vous semblez avoir une taille maximale trop faible pour votre
innodb_data_file_path
dans votremy.cnf
, Dans cet exemplevous ne pouvez pas héberger plus de 512 Mo de données dans toutes les tables innodb combinées.
Vous devriez peut-être passer à un schéma innodb-per-table en utilisant
innodb_file_per_table
.la source
/etc/mysql/
et est en partie divisé en fichiers supplémentaires dans/etc/mysql/conf.d
innodb_data_file_path
ligne/etc/mysql/mysql.conf.d/mysqld.cnf
et redémarré les servicesmysql
etapache2
Une autre raison possible est que la partition est pleine - c'est exactement ce qui m'est arrivé maintenant.
la source
df -h
pour vérifier la taille du disqueVous 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.
la source
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
cela a fonctionné.Vous devez modifier le plafond de limite défini 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 souhaitez que la mémoire s'étende automatiquement à 512 Mo
Si vous ne connaissez pas la limite ou ne voulez pas mettre de limite de limite, vous pouvez la modifier comme ceci
la source
Cette erreur apparaît également si la partition sur laquelle
tmpdir
réside se remplit (en raison d'un alter table ou autrela source
Dans mon cas, c'était parce que la partition hébergeant le fichier ibdata1 était pleine.
la source
Il se peut que vous manquiez d'espace soit dans la partition où les tables mysql sont stockées (généralement / var / lib / mysql) soit là où les tables temporaires sont stockées (généralement / tmp).
Vous souhaiterez peut-être: - surveiller votre espace libre lors de la création de l'index. - pointez la variable MySQL tmpdir vers un emplacement différent. Cela nécessite un redémarrage du serveur.
la source
J'ai aussi fait face à cette erreur lors de l'importation d'un fichier de base de données sql de 8 Go. Vérifié mon lecteur d'installation mysql. Il n'y avait plus d'espace dans le lecteur. Donc, j'ai un peu d'espace en supprimant les éléments indésirables et en réexécutant ma commande d'importation de base de données. Cette fois, ce fut un succès.
la source
Si vous utilisez NDBCLUSTER comme moteur de stockage, vous devez augmenter
DataMemory
etIndexMemory
.Mysql FQA
la source
Sauf si vous avez activé l'
innodb_file_per_table
option,InnoDB
conserve toutes les données dans un seul fichier, généralement appeléibdata1
.Vérifiez la taille de ce fichier et vérifiez que vous disposez de suffisamment d'espace disque dans le lecteur sur lequel il réside.
la source
nous avons eu: SQLSTATE [HY000]: Erreur générale: 1114 La table 'catalog_product_index_price_bundle_sel_tmp' est pleine
résolu par:
modifier la configuration de la base de données:
nano /etc/my.cnf
tmp_table_size = 256 Mo max_heap_table_size = 256 Mo
la source
Pour citer les documents MySQL.
la source
dans mon cas, c'est simplement parce que le serveur mysql fonctionne avec une application, qui écrit trop de journaux, que le disque est plein.
vous pouvez vérifier si le disque a suffisamment d'espace utilisé
si le pourcentage d'utilisation du disque est de 100%, vous pouvez utiliser cette commande pour trouver quel répertoire est trop volumineux
la source
UTILISATEURS DE DOCKER: Cela se produit également lorsque vous avez atteint environ 90% de la taille limite de votre image Docker (il semble que 10% soient nécessaires pour la mise en cache ou plus). Le libellé est déroutant, car cela signifie simplement la quantité d'espace disque que Docker peut utiliser pour pratiquement tout.
Pour résoudre le problème, accédez aux paramètres du bureau Docker> Disque> déplacez le curseur un peu plus vers la droite> Appliquer.
la source
Sur CentOS 7, simplement arrêter et démarrer le service MySQL a résolu ce problème pour moi.
sudo service mysql stop
sudo service mysql start
la source
J'ai rencontré le même problème en raison du faible espace disque. Et la partition qui héberge le fichier ibdata1 qui est le tablespace système de l'infrastructure InnoDB était pleine.
la source
Je rencontrais ce problème ... dans mon cas, je manquerais de stockage sur mon serveur dédié. Vérifiez que si tout le reste échoue et envisagez d'augmenter l'espace disque ou de supprimer les données ou fichiers indésirables.
la source
Dans mon cas, la mémoire du serveur était pleine et la base de données ne pouvait donc pas écrire les données temporaires. Pour le résoudre, il vous suffit de faire une place sur votre disque.
la source
J'ai résolu ce problème en augmentant la quantité de mémoire disponible pour la VM vagrant où se trouvait la base de données.
la source
Dans mon cas, j'essayais d'exécuter une commande alter table et l'espace disque disponible était inférieur à la taille de la table. Une fois, j'ai augmenté l'espace disque, le problème a disparu.
la source
Ce disque est plein dans / var / www / mysql
la source
Cela pourrait également être la limite InnoDB pour le nombre de transactions ouvertes:
http://bugs.mysql.com/bug.php?id=26590
la source