Ich versuche, einer InnoDB
Tabelle mit einer einfachen Abfrage eine Zeile hinzuzufügen :
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Wenn ich diese Abfrage versuche, wird Folgendes angezeigt:
FEHLER 1114 (HY000): Die Tabelle
zip_codes
ist voll
A tun
SELECT COUNT(*) FROM zip_codes
gibt mir 188.959 Zeilen, was nicht allzu viele zu sein scheint, wenn man bedenkt, dass ich eine andere Tabelle mit 810.635 Zeilen in derselben Datenbank habe.
Ich bin ziemlich unerfahren mit dem InnoDB engine
und habe dieses Problem nie erlebt MyISAM
. Was sind einige der möglichen Probleme hier?
BEARBEITEN: Dies tritt nur auf, wenn der zip_codes
Tabelle eine Zeile hinzugefügt wird .
Antworten:
BEARBEITEN: Überprüfen Sie zunächst, ob Ihnen nicht der Speicherplatz ausgeht, bevor Sie die konfigurationsbezogene Auflösung festlegen.
Sie scheinen eine zu geringe maximale Größe für Sie zu haben
innodb_data_file_path
in Ihremmy.cnf
, in diesem BeispielSie können nicht mehr als 512 MB Daten in allen Innodb-Tabellen zusammen hosten.
Vielleicht sollten Sie mit zu einem Innodb-per-Table-Schema wechseln
innodb_file_per_table
.quelle
/etc/mysql/
und wird teilweise in zusätzliche Dateien in/etc/mysql/conf.d
innodb_data_file_path
Leitung zu/etc/mysql/mysql.conf.d/mysqld.cnf
und Neustarten dermysql
undapache2
DiensteEin weiterer möglicher Grund ist, dass die Partition voll ist - genau das ist mir jetzt passiert.
quelle
df -h
zur Überprüfung der PlattengrößeSie erhalten auch den gleichen Fehler FEHLER 1114 (HY000): Die Tabelle '# sql-310a_8867d7f' ist voll
Wenn Sie versuchen, einer Tabelle, die die Speicher-Engine MEMORY verwendet, einen Index hinzuzufügen.
quelle
ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);
es funktioniert.Sie müssen die in my.cnf festgelegte Obergrenze für die Tabellen INNO_DB ä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
Wenn Sie das Limit nicht kennen oder keine Limitobergrenze festlegen möchten, können Sie es wie folgt ändern
quelle
Dieser Fehler tritt auch auf, wenn die Partition, auf der sich die Partition
tmpdir
befindet, voll ist (aufgrund einer Änderungstabelle oder einer anderen)quelle
In meinem Fall lag dies daran, dass die Partition, auf der sich die Datei ibdata1 befindet, voll war.
quelle
Möglicherweise fehlt Ihnen der Speicherplatz entweder in der Partition, in der die MySQL-Tabellen gespeichert sind (normalerweise / var / lib / mysql), oder in der Partition, in der die temporären Tabellen gespeichert sind (normalerweise / tmp).
Möglicherweise möchten Sie: - Ihren freien Speicherplatz während der Indexerstellung überwachen. - Zeigen Sie mit der MySQL-Variablen tmpdir auf einen anderen Speicherort. Dies erfordert einen Neustart des Servers.
quelle
Auch ich habe diesen Fehler beim Importieren einer 8 GB SQL-Datenbankdatei festgestellt. Überprüfte mein MySQL-Installationslaufwerk. In der Einfahrt war kein Platz mehr. Erhalten Sie also etwas Speicherplatz, indem Sie unerwünschte Elemente entfernen und meinen Datenbankimportbefehl erneut ausführen. Diesmal war es erfolgreich.
quelle
Wenn Sie NDBCLUSTER als Speicher-Engine verwenden, sollten Sie
DataMemory
und erhöhenIndexMemory
.MySQL FQA
quelle
Sofern Sie die
innodb_file_per_table
Option nicht aktiviert haben , werdenInnoDB
alle Daten in einer Datei gespeichert, die normalerweise aufgerufen wirdibdata1
.Überprüfen Sie die Größe dieser Datei und stellen Sie sicher, dass auf dem Laufwerk, auf dem sie sich befindet, genügend Speicherplatz vorhanden ist.
quelle
wir hatten: SQLSTATE [HY000]: Allgemeiner Fehler: 1114 Die Tabelle 'catalog_product_index_price_bundle_sel_tmp' ist voll
gelöst durch:
Konfiguration der Datenbank bearbeiten:
nano /etc/my.cnf
tmp_table_size = 256M max_heap_table_size = 256M
quelle
Um die MySQL-Dokumente zu zitieren.
quelle
In meinem Fall ist die Festplatte voll, nur weil der MySQL-Server zusammen mit einer Anwendung ausgeführt wird, die zu viele Protokolle schreibt.
Sie können überprüfen, ob auf der Festplatte genügend Speicherplatz vorhanden ist
Wenn der Prozentsatz der Festplattenauslastung 100% beträgt, können Sie mit diesem Befehl ermitteln, welches Verzeichnis zu groß ist
quelle
DOCKER-BENUTZER: Dies passiert auch, wenn Sie ungefähr 90% Ihrer Docker-Bildgrößenbeschränkung erreicht haben (anscheinend werden 10% für das Caching benötigt oder so). Der Wortlaut ist verwirrend, da dies einfach bedeutet, wie viel Speicherplatz Docker für praktisch alles verwenden kann.
Um dies zu beheben, gehen Sie zu Ihren Docker-Desktop-Einstellungen> Festplatte> Schieben Sie den Schieberegler etwas weiter nach rechts> Übernehmen.
quelle
Unter CentOS 7 wurde dies durch einfaches Stoppen und Starten des MySQL-Dienstes behoben.
sudo service mysql stop
sudo service mysql start
quelle
Ich hatte das gleiche Problem wegen des geringen Speicherplatzes. Die Partition, auf der sich die Datei ibdata1 befindet, die den Systemtabellenbereich für die InnoDB-Infrastruktur darstellt, war voll.
quelle
Ich hatte dieses Problem ... in meinem Fall ging mir der Speicher auf meinem dedizierten Server aus. Überprüfen Sie dies, wenn alles andere fehlschlägt, und erwägen Sie, den Speicherplatz zu vergrößern oder unerwünschte Daten oder Dateien zu entfernen.
quelle
In meinem Fall war der Serverspeicher voll, sodass die Datenbank die temporären Daten nicht schreiben konnte. Um es zu lösen, müssen Sie nur einen Platz auf Ihrem Laufwerk schaffen.
quelle
Ich habe dieses Problem behoben, indem ich den verfügbaren Speicher für die vagabundierende VM, auf der sich die Datenbank befand, erhöht habe.
quelle
In meinem Fall habe ich versucht, einen Befehl zum Ändern der Tabelle auszuführen, und der verfügbare Speicherplatz war kleiner als die Größe der Tabelle. Einmal habe ich den Speicherplatz vergrößert, das Problem ist verschwunden.
quelle
Diese Festplatte ist unter / var / www / mysql voll
quelle
Dies könnte auch das InnoDB-Limit für die Anzahl offener Transaktionen sein:
http://bugs.mysql.com/bug.php?id=26590
quelle