1030 Fehler 28 von der Speicher-Engine erhalten

205

Ich arbeite an einem Projekt, in dem ich eine Datenbank mit 300 Tabellen für jeden Benutzer erstellen muss, der die Demoanwendung sehen möchte. Es hat gut funktioniert, aber heute, als ich mit einem neuen Benutzer getestet habe, um eine Demo zu sehen, wurde mir diese Fehlermeldung angezeigt

1030 Got error 28 from storage engine

Nachdem ich einige Zeit gegoogelt hatte, stellte ich fest, dass es sich um einen Fehler handelt, der mit dem Speicherplatz der Datenbank oder temporären Dateien zusammenhängt. Ich habe versucht, es zu beheben, aber ich bin gescheitert. Jetzt kann ich nicht einmal MySQL starten. Wie kann ich das beheben und ich möchte auch die Größe auf Maximum erhöhen, damit ich nicht immer wieder mit dem gleichen Problem konfrontiert werde.

Skorpion
quelle
1
Das Offensichtliche angeben ... Haben Sie genügend freien Speicherplatz auf der Partition, auf der MySQL-Daten gespeichert sind? Auf welcher Plattform laufen Sie? Localhost oder ein Hosting-Unternehmen?
DCoder
@ DCoder: - Ich habe einen Server in der Amazon Cloud
ScoRpion
1
@ ShowketBhat Ich habe das gleiche Problem, mein /tmpOrdner ist zu 100% belegt. Ist es in Ordnung, einfach alle Dateien aus diesem / tmp-Ordner zu löschen? Und noch eine Frage, warum es nicht automatisch gelöscht wird?
Dima Deplov

Antworten:

412

MySQL-Fehler " 28 von der Speicher-Engine " - bedeutet " nicht genügend Speicherplatz ".

Verwenden Sie den folgenden Befehl, um den Speicherplatz anzuzeigen.

myServer# df -h

Die Ergebnisse müssen so sein.

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/vdisk     13G     13G     46M   100%    /
devfs         1.0k    1.0k      0B   100%    /dev
Oleksandr Diudiun
quelle
6
Weitere Informationen erhalten Sie, wenn der Dateisystem / tmp 100% der Nutzung erreicht.
Kumar
1
Selbst wenn Sie Ihr MySQL-Datenverzeichnis auf einer anderen Partition (oder Festplatte) haben, die über freien Speicherplatz verfügt, müssen Sie freien Speicherplatz auf / und / tmp haben (natürlich können Sie die letzten auf einer anderen Partition / Festplatte haben)
Diego Andrés Díaz Espinoza
1
Du hast meinen Tag gerettet, ich habe eine 390-GB-Datei mit langsamem Protokoll gefunden ((
mulya
1
Gute Antwort. Das hat mir viel Zeit gespart. +1
Pratik Soni
34

Um dies zu erweitern (obwohl es sich um eine ältere Frage handelt); Es geht wahrscheinlich nicht um den MySQL-Speicher selbst, sondern um Speicherplatz im Allgemeinen, vorausgesetzt, es handelt sich um tmp-Dateien oder ähnliches. Mein MySQL-Datenverzeichnis war nicht voll, die Partition / (root) war

Maarten
quelle
10

Ich hatte das gleiche Problem in AWS RDS. Es lag daran, dass der Freeable Space (Festplattenspeicher) voll war. Sie müssen Ihren Speicherplatz vergrößern oder einige Daten entfernen.

Gregory Burns
quelle
8

Mein / tmp war% 100. Nach dem Entfernen aller Dateien und dem Neustart von MySQL funktionierte alles einwandfrei.

Sami Onur Zaim
quelle
2

Mein Ordner / var / log / apache2 war 35 g schwer und einige Protokolle in / var / log waren insgesamt die anderen 5 g meiner 40 g Festplatte. Ich habe alle * .gz-Protokolle gelöscht und nachdem ich sichergestellt hatte, dass die anderen Protokolle keine schlechten Dinge tun würden, wenn ich mit ihnen herumspielen würde, habe ich sie auch gelöscht.

echo "clear" > access.log

etc.

PyromonkeyGG
quelle
3
Das ist eine sehr seltsame Art, eine Protokolldatei zu löschen, nicht wahr? Warum nicht einfach rm es?
user1175849
3
Vielleicht können Sie dann die Datei und die Berechtigungen behalten?
Zachary Dahan
9
Ich empfehle truncate, um Protokolle zu löschen,truncate -s 0 access.log
2

Überprüfen Sie Ihre / backup, um festzustellen, ob Sie eine ältere, nicht benötigte Sicherung löschen können.

Jacob
quelle
1

Ich hatte ein ähnliches Problem aufgrund meiner Replikations- Binärprotokolle.

Wenn dies der Fall ist, erstellen Sie einfach einen Cronjob, um diese Abfrage jeden Tag auszuführen:

PURGE BINARY LOGS BEFORE DATE_SUB( NOW(), INTERVAL 2 DAY );

Dadurch werden alle Binärprotokolle entfernt, die älter als 2 Tage sind.

Ich habe diese Lösung hier gefunden .

GabrielOliv
quelle
0

Ein einfaches: $ sth-> finish (); Würde Sie wahrscheinlich davor bewahren, sich darüber Sorgen zu machen. MySQL verwendet den tmp-Speicher des Systems anstelle des eigenen Speicherplatzes.

Craig
quelle
0
sudo su


cd /var/log/mysql

und zuletzt geben Sie ein: > mysql-slow.log

Das hat bei mir funktioniert

Kaushik Thanki
quelle
0

Löschen Sie die Problemdatenbank und starten Sie den MySQL-Dienst neu ( sudo service mysql restartzum Beispiel).

Sergio Belevskij
quelle