Ich habe den folgenden Fehler mit einer unserer Webanwendungen -
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
Irgendwelche Ideen - ist dies ein Problem mit dem Festplattenspeicher auf meinem Server?
Antworten:
Verwenden Sie den
perror
Befehl :Sofern sich die Fehlercodes auf Ihrem System nicht unterscheiden, ist Ihr Dateisystem voll.
quelle
while true; do df -h /tmp; sleep 3; done
während der Ausführung des Skripts verwenden, um zu sehen, wie viel Speicherplatz von temporären Tabellen verwendet wird.Wir haben ein ähnliches Problem festgestellt, und das Problem war das von MySQL verwendete Verzeichnis / tmp für seine Anforderungen (Standardkonfiguration). Und / tmp befand sich auf einer eigenen Partition, die zu wenig Platz für große MySQL-Anfragen hatte.
Weitere Informationen finden Sie in dieser Antwort: https://stackoverflow.com/a/3716778/994302
quelle
Ich hatte das gleiche Problem, aber der Speicherplatz war in Ordnung (nur 40% voll). Problem waren Inodes, ich hatte zu viele kleine Dateien und meine Inodes waren voll.
Sie können den Inode-Status mit df -i überprüfen
quelle
Der Fehler bedeutet, dass Sie nicht genügend Speicherplatz haben, um temporäre Dateien zu erstellen, die von MySQL benötigt werden.
Als erstes können Sie versuchen, die Größe Ihrer
/tmp/
Partition zu erweitern. Wenn Sie sich unter LVM befinden, überprüfen Sie denlvextend
Befehl.Wenn Sie die Größe Ihrer Partition nicht erhöhen können, können
/tmp/
Sie in der MySQL-Konfiguration arbeiten, diemy.cnf
(normalerweise aktive/etc/mysql/my.cnf
) Datei bearbeiten und nach dieser Zeile suchen:tmpdir = /tmp/
Ändern Sie es für was Sie wollen (Beispiel
/var/tmp/
). Stellen Sie einfach sicher, dass Sie Speicherplatz haben, und weisen Sie dem MySQL-Benutzer im neuen Verzeichnis eine Schreibberechtigung zu.Hoffe das hilft!
quelle
Führen Sie den folgenden Code aus:
du -sh / var / log / mysql
Möglicherweise füllten MySQL-Binärprotokolle den Speicher. Wenn ja, folgen Sie dem Entfernen alter Protokolle und starten Sie den Server neu. Fügen Sie auch in my.cnf hinzu:
expire_logs_days = 3
quelle
du -sh /var/log/mysql.log
Ich hatte den gleichen Fehler und das Problem war einfach nicht genug Speicherplatz auf meiner virtuellen Maschine. Ich habe einige unnötige Dateien gelöscht und es hat wieder funktioniert.
Meine Speicher- / Speicherplatzzuordnung sah ungefähr so aus
quelle
Sie können auch versuchen, diese Zeile zu verwenden, wenn die andere nicht funktioniert:
du -sh / var / lib / mysql / database_Name
Sie können sich auch bei Ihrem Host erkundigen, wie groß Ihre Datenbanken sein dürfen.
quelle
Für xampp-Benutzer: Meiner Erfahrung nach wurde das Problem durch eine Datei mit dem Namen '0' verursacht, die sich im Ordner 'mysql' befindet. Die Größe war zu groß (meine explodierte auf etwa 256 GB). Seine Entfernung behebt das Problem.
quelle
Dieser Fehler tritt auf, wenn Sie nicht genügend Speicherplatz in der Partition haben. Normalerweise verwendet MYSQL / tmp auf Linux-Servern. Dies kann bei einigen Abfragen der Fall sein, da bei der Suche entweder viele Daten zurückgegeben wurden oder möglicherweise sogar nur viele Daten durchsucht wurden, um große temporäre Dateien zu erstellen.
Bearbeiten Sie Ihre /etc/mysql/my.cnf
z.B
Sollte mit mehr Speicherplatz als / tmp zugewiesen werden, der sich normalerweise in einer eigenen Partition befindet.
quelle
Heute. Ich habe das gleiche Problem ... meine Lösung:
1) Inode überprüfen:
df -i
Ich sah:2) Ich begann zu suchen, welche Ordner die maximale Anzahl von Inods verwenden:
Bald fand ich im Ordner / home / tomnolane / tmp, der eine große Anzahl von Dateien enthielt.
3) Ich habe den Ordner / home / tomnolane / tmp PROFIT entfernt.
4) geprüft:
Es ist in Ordnung.
5)
restart mysql service
- es ist ok !!!!quelle