it-swarm.com.de

ERROR 1114 (HY000): Die Tabelle ist voll

Ich versuche, einer InnoDB-Tabelle eine Zeile mit einer einfachen Abfrage hinzuzufügen:

INSERT INTO Zip_codes (Zip_code, city) VALUES ('90210', 'Beverly Hills');

Wenn ich diese Abfrage versuche, erhalte ich Folgendes:

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

Wenn Sie "SELECT COUNT (*) FROM Zip_codes" ausführen, erhalten Sie 188.959 Zeilen. Dies scheint jedoch nicht zu viele zu sein, wenn man bedenkt, dass ich eine andere Tabelle mit 810.635 Zeilen in derselben Datenbank habe.

Ich bin mit der InnoDB-Engine ziemlich unerfahren und habe dieses Problem mit MyISAM noch nie erlebt. Was sind einige der möglichen Probleme hier?

BEARBEITEN: Dies tritt nur auf, wenn Sie der Tabelle Zip_codes eine Zeile hinzufügen.

86
Wickethewok

BEARBEITEN: Überprüfen Sie zunächst, ob der Festplattenspeicher nicht ausgeht, bevor Sie die auflösung für die Konfiguration auflösen.

Sie haben anscheinend eine zu geringe maximale Größe für Ihren innodb_data_file_path in Ihrem my.cnf. In diesem Beispiel

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

sie können nicht mehr als 512 MB Daten in allen innodb-Tabellen zusammen hosten.

Vielleicht sollten Sie mit innodb_file_per_table zu einem innodb-per-table-Schema wechseln.

76
Martin C.

Ein weiterer möglicher Grund ist, dass die Partition voll ist - genau das ist mir jetzt passiert.

74
maaartinus

Sie erhalten auch den gleichen Fehler ERROR 1114 (HY000): Die Tabelle '# sql-310a_8867d7f' ist voll

wenn Sie versuchen, einen Index zu einer Tabelle hinzuzufügen, die die Speicher-Engine MEMORY verwendet.

23
Green Card

Sie müssen den in my.cnf festgelegten Grenzwert für die INNO_DB-Tabellen ändern. Diese Speicherbegrenzung ist nicht für einzelne Tabellen festgelegt, sondern für alle Tabellen zusammen.

Wenn Sie möchten, dass der Speicher automatisch auf 512 MB erweitert wird 

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

Wenn Sie das Limit nicht kennen oder keine Limitobergrenze setzen möchten, können Sie es wie folgt ändern

innodb_data_file_path = ibdata1:10M:autoextend
16
cleanunicorn

Dieser Fehler wird auch angezeigt, wenn die Partition, auf der sich tmpdir befindet, voll ist (aufgrund einer Änderungstabelle oder einer anderen)

10
fimbulvetr

In meinem Fall lag dies daran, dass die Partition, auf der sich die Datei ibdata1 befand, voll war.

9
skiphoppy

Möglicherweise ist nicht genügend Speicherplatz vorhanden, entweder in der Partition, in der die mysql-Tabellen gespeichert sind (normalerweise/var/lib/mysql) oder in denen die temporären Tabellen gespeichert sind (normalerweise/tmp).

Möglicherweise möchten Sie: - Ihren freien Speicherplatz während der Indexerstellung überwachen. - Verweisen Sie die MySQL-Variable tmpdir an einen anderen Ort. Dies erfordert einen Neustart des Servers.

9
Julio

Wenn Sie NDBCLUSTER als Speicher-Engine verwenden, sollten Sie DataMemory und IndexMemory erhöhen.

Mysql FAQ

7
metdos

Auch ich habe diesen Fehler beim Importieren einer 8GB-SQL-Datenbankdatei festgestellt. Überprüfte mein MySQL-Installationslaufwerk. Im Laufwerk war kein Platz mehr. Also habe ich etwas Platz bekommen, indem Sie unerwünschte Elemente entfernt und meinen Datenbankimportbefehl erneut ausgeführt haben. Diesmal war es erfolgreich.  

6
Arun Kumar

Wenn Sie die innodb_file_per_table-Option nicht aktiviert haben, speichert InnoDB alle Daten in einer Datei, die normalerweise als ibdata1 bezeichnet wird.

Überprüfen Sie die Größe dieser Datei und prüfen Sie, ob auf dem Laufwerk, auf dem sich die Datei befindet, genügend Speicherplatz vorhanden ist.

5
Quassnoi

wir hatten: SQLSTATE [HY000]: Allgemeiner Fehler: 1114 Die Tabelle 'catalog_product_index_price_bundle_sel_tmp' ist voll

gelöst durch: 

edit edit von db:

nano /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256M

  • starten Sie db neu 
3
Sition

So zitieren Sie die MySQL-Dokumente.

Die InnoDB-Speicher-Engine verwaltet InnoDB-Tabellen in einem Tabellenbereich, der aus mehreren Dateien erstellt werden kann. Dadurch kann eine Tabelle die maximale individuelle Dateigröße überschreiten. Der Tabellenbereich kann RAW-Partitionen enthalten, die extrem große Tabellen ermöglichen. Die maximale Größe des Tabellenbereichs beträgt 64 TB.

Wenn Sie InnoDB-Tabellen verwenden und keinen Platz mehr im InnoDB-Tabellenbereich haben. In diesem Fall besteht die Lösung darin, den InnoDB-Tabellenbereich zu erweitern. Weitere Informationen hierzu finden Sie in Abschnitt 13.2.5, [„Hinzufügen, Entfernen oder Ändern der Größe von InnoDB-Daten und -Protokolldateien“.]

2
Ólafur Waage

Ich habe dieses Problem festgestellt ... In meinem Fall hatte ich keinen Speicher mehr auf meinem dedizierten Server. Überprüfen Sie, wenn alles andere fehlschlägt, und ziehen Sie in Betracht, den Festplattenspeicher zu erhöhen oder unerwünschte Daten oder Dateien zu entfernen.

1
NotJay

DOCKER-BENUTZER: Dies passiert auch, wenn Sie ungefähr 90% Ihres Limits für die Docker-Bildgröße erreicht haben (anscheinend werden etwa 10% für das Caching benötigt). Die Formulierung ist verwirrend, da dies einfach bedeutet, dass Docker für praktisch alles Speicherplatz verwenden kann.

Um dies zu beheben, gehen Sie zu Ihren Docker-Desktop-Einstellungen> Festplatte> bewegen Sie den Schieberegler etwas weiter nach rechts> Übernehmen.

enter image description here

1
Sliq

In meinem Fall war der Serverspeicher voll, so dass die DB die temporären Daten nicht schreiben konnte. Um das Problem zu lösen, müssen Sie nur einen Platz auf Ihrem Laufwerk einrichten.

in meinem Fall ist es nur, weil der MySQL-Server zusammen mit einer Anwendung ausgeführt wird, die zu viele Protokolle schreibt, dass die Festplatte voll ist. 

sie können überprüfen, ob die Festplatte ausreichend Speicherplatz hat

df -h

wenn der Prozentsatz der Festplattennutzung 100% beträgt, können Sie mit diesem Befehl herausfinden, welches Verzeichnis zu groß ist

du -h -d 1 /
1
kite

Ich hatte das gleiche Problem wegen des geringen Speicherplatzes. Die Partition, auf der die Datei ibdata1 gehostet wird, ist der System-Tablespace für die InnoDB-Infrastruktur.

1

In meinem Fall habe ich versucht, einen alter table-Befehl auszuführen, und der verfügbare Speicherplatz war geringer als die Größe der Tabelle. Einmal erhöhte ich den Speicherplatz, den das Problem löste.

0
Pratik Singhal

Ich habe dieses Problem behoben, indem der verfügbare Speicher für den Vagabund VM erhöht wurde, auf dem sich die Datenbank befand. 

0
yvoloshin

Bei CentOS 7 wurde der MySQL-Dienst einfach angehalten und gestartet, was für mich behoben wurde.

Sudo service mysql stop

Sudo service mysql start

0
crmpicco