2013-06-04 7 views
13

Jeśli tabele ulegają awarii, oznacza to, że coś jest nie tak z moim systemem.MySQL powiedział: # 1194 - Tabela "tablename" jest oznaczona jako rozbita i powinna zostać naprawiona

MySQL said: 

#1194 - Table 'tablename' is marked as crashed and should be repaired 

Moja witryna jest obecnie niedostępna z tego powodu.

Wiem, jak naprawić stolik z phpmyadmin, ale czy jest to bezpieczny sposób na naprawę?

Jaki jest istotny czynnik dla tego problemu?

Pytanie. Ogólnie, dlaczego tabela się zawiesiła?

Odpowiedzi. Mogą to być powody -

  1. Miejsce na dysku serwera było pełne. (Sprawdź ilość wolnego miejsca na serwerze)

  2. Nieprawidłowe zamknięcie serwera MySQL/Niewłaściwe zamykanie tabel podczas korzystania z baz danych.

  3. Więcej obciążenia serwera.

+0

można pisać kwerendy? – Stephan

+0

może to pomóc http://www.mysqlperformanceblog.com/2007/11/13/10-ways-to-crash-or-overload-mysql/ – 6339

+0

"* Ogólnie rzecz biorąc, dlaczego tabela się zawiesiła? *", Ponieważ jest to MyISAM. .. Ma reputację, że nie jest bezpieczny. –

Odpowiedz

19

Po pierwsze - istnieje wiele przyczyn rozbicia stołu.

  • awaria dysku twardego
  • nagły restart serwera
  • awaria serwera
  • problemy firmware (kontroler RAID lub BIOS)
  • wad okablowania
  • itp

naprawy z phpmyadmin działa zasadniczo tak samo jak polecenie mysqlrepair. Proponuję, aby naprawić wszystko w linii poleceń:

mysqlrepair -A --auto-repair 
mysqlrepair -A -o 

Albo rozpocząć test:

mysqlrepair -A -c 
+2

Mówi, że mysqlrepair nie jest zainstalowany. Jest to to samo co polecenie mysqlcheck -uUSER -pPASSWORD --repair --extended -A –

4

Tak można naprawić tabelę z phpmyadmin, to nie ma wpływu na dane, można także naprawić tabelę z powłoki z poleceniem 'myisamchk.

1

Używam tego z wiersza poleceń:

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases 
+1

Daje: "Błąd: mysqlcheck nie obsługuje wielu sprzecznych poleceń." – asdf

1

Zastosowanie:

mysqlcheck -u root -p --auto-repair --check --all-databases 
(Password prompted) 

Wprowadź hasło MySQL dla użytkownika root i wszystko jest zrobione.

11

Jeśli nie masz narzędzi wiersza poleceń potrzebne, a przyczyną katastrofy najprawdopodobniej jest sam MySQL, uruchom to z MySQL do naprawy tabeli:

REPAIR TABLE db_name.table_name; 
0

Jeśli masz dostęp do serwera ssh można zaloguj się, a następnie wykonaj:

df -h 

i można zobaczyć coś takiego:

Filesystem   Size Used Avail Use% Mounted on 
/dev/cciss/xxxx  19G 825M 18G 5%/
/dev/cciss/xxxx  9.4G 4.8G 4.2G 54% /usr 
/dev/cciss/xxxx  15G 1.8G 12G 13% /var 
/dev/cciss/xxxx  19G 18G 0G 0% /opt 
/dev/cciss/xxxx  4.7G 243M 4.3G 6% /tmp 
/dev/cciss/xxxx  9.4G 1.5G 7.5G 17% /home 

To LAMP zainstalowany na /opt, po trochę wolnego miejsca na dysku, można uruchomić kwerendę (jak wyżej napisałem):

Repair table db.mytablecrashed 

I masz w ostatnim rzędzie:

Table    OP  Msg_type Msg_text 
... 
db.mytablecrashed repair status OK 
1

rozwiązanie:

Wystarczy przejść do bazy danych i wybierz tabeli która ma problem i wybierz „stół naprawy” opcję będzie naprawić wpisy o awariach w tabeli i rozwiązać problem

enter image description here

Powiązane problemy