1030 Wystąpił błąd 28 z silnika pamięci masowej

205

Pracuję nad projektem, w którym muszę utworzyć bazę danych z 300 tabelami dla każdego użytkownika, który chce zobaczyć aplikację demonstracyjną. działało dobrze, ale dzisiaj, gdy testowałem z nowym użytkownikiem, aby zobaczyć wersję demonstracyjną, pokazał mi ten komunikat o błędzie

1030 Got error 28 from storage engine

Po spędzeniu czasu na googlowaniu odkryłem, że jest to błąd związany z przestrzenią bazy danych lub plików tymczasowych. Próbowałem to naprawić, ale mi się nie udało. teraz nie jestem nawet w stanie uruchomić MySQL. Jak mogę to naprawić i chciałbym również zwiększyć rozmiar do maksimum, aby nie napotykać tego samego problemu raz po raz.

Skorpion
źródło
1
Mówiąc oczywiste ... czy masz wystarczająco dużo wolnego miejsca na partycji, na której przechowywane są dane MySQL? Na jakiej platformie używasz? Localhost czy firma hostingowa?
DCoder
@DCoder: - Mam serwer w chmurze Amazon
ScoRpion
1
@ShowketBhat Mam ten sam problem, mój /tmpfolder ma 100% wykorzystania miejsca. Czy wystarczy usunąć wszystkie pliki z tego folderu / tmp? I kolejne pytanie, dlaczego nie usuwa się automatycznie?
Dima Deplov,

Odpowiedzi:

412

Błąd MySQL „ 28 z silnika pamięci ” - oznacza „ za mało miejsca na dysku ”.

Aby wyświetlić miejsce na dysku, użyj polecenia poniżej.

myServer# df -h

Wyniki muszą być takie.

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/vdisk     13G     13G     46M   100%    /
devfs         1.0k    1.0k      0B   100%    /dev
Oleksandr Diudiun
źródło
6
Aby uzyskać dodatkowe informacje, pojawi się ten sam błąd, jeśli system plików / tmp osiągnie 100% użycia.
Kumar
1
Nawet jeśli masz katalog danych MySQL na innej partycji (lub dysku), które mają wolne miejsce, musisz mieć wolne miejsce na / i / tmp (oczywiście możesz mieć ostatnie na innej partycji / dysku)
Diego Andrés Díaz Espinoza
1
Uratowałeś mi dzień. Znalazłem plik 390 Gb wolnego dziennika ((
Mulya
1
Niezła odpowiedź. Oszczędzało mi to dużo czasu. +1
Pratik Soni
34

Aby rozwinąć tę kwestię (chociaż jest to starsze pytanie); Prawdopodobnie nie chodzi o samą przestrzeń MySQL, ale ogólnie o przestrzeń, zakładając, że pliki tmp lub coś takiego. Mój katalog danych mysql nie był pełny, partycja / (root) była

Maarten
źródło
10

Miałem ten sam problem w AWS RDS. Było to spowodowane tym, że wolne miejsce (miejsce na dysku twardym) było pełne. Musisz zwiększyć przestrzeń lub usunąć niektóre dane.

Gregory Burns
źródło
8

Mój / tmp wynosił% 100. Po usunięciu wszystkich plików i ponownym uruchomieniu mysql wszystko działało dobrze.

Sami Onur Zaim
źródło
2

Mój folder / var / log / apache2 miał 35g, a niektóre logi w / var / log łącznie były innymi 5g mojego 40g twardego dysku. Wyczyściłem wszystkie dzienniki * .gz i po upewnieniu się, że inne dzienniki nie zrobią złych rzeczy, jeśli pomieszam je, po prostu je wyczyściłem.

echo "clear" > access.log

itp.

PyromonkeyGG
źródło
3
To bardzo dziwny sposób na wyczyszczenie pliku dziennika, prawda? Dlaczego po prostu nie rm?
user1175849,
3
Może wtedy możesz zachować plik i uprawnienia?
Zachary Dahan
9
Polecam używać truncatedo czyszczenia dzienników,truncate -s 0 access.log
2

Sprawdź swoją kopię zapasową, aby sprawdzić, czy możesz usunąć starszą niepotrzebną kopię zapasową.

Jakub
źródło
1

Miałem podobny problem z powodu moich logów binarnych replikacji .

W takim przypadku po prostu utwórz cronjob, aby codziennie uruchamiać to zapytanie:

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

Spowoduje to usunięcie wszystkich dzienników binarnych starszych niż 2 dni.

Znalazłem to rozwiązanie tutaj .

GabrielOliv
źródło
0

Prosty: $ sth-> finish (); Prawdopodobnie uratowałoby cię to od martwienia się o to. Mysql używa przestrzeni tmp systemu zamiast własnej przestrzeni.

Craig
źródło
0
sudo su


cd /var/log/mysql

i na koniec wpisz: > mysql-slow.log

To zadziałało dla mnie

Kaushik Thanki
źródło
0

Usuń bazę danych problemów, a następnie uruchom ponownie usługę mysql ( sudo service mysql restartna przykład).

Sergio Belevskij
źródło