sql >> Databasteknik >  >> RDS >> Mysql

MySQL-tabellen är markerad som kraschad

MyISAM-tabeller är mycket lätta att krascha. Det finns rubrikinformation i varje tabell som håller reda på hur många öppna filhanterare en MyISAM-tabell har.

Om mysqld kraschar, hade någon MyISAM-tabell som hade öppna filhandtag aldrig möjlighet att minska antalet filhandtag när varje filhandtag stängdes. Således, om ett nytt filhandtag öppnar en MyISAM-tabell (.MYD-fil) och mysqld upptäcker en oöverensstämmelse mellan antalet filhandtag som en MyISAM-tabell tror är öppet och antalet filhandtag som MyISAM-tabellen faktiskt har öppna, är tabellen förklarade kraschade.

Det finns fyra(4) metoder för att hantera detta:

METOD #1:Ställ in automatisk MyISAM-reparation

Se mitt inlägg https://dba.stackexchange.com/a/15079/877 om hur man ställer in detta vid en omstart av MySQL (15 mars 2012)

METOD #2 :Använd InnoDB istället för MyISAM

InnoDB har kraschåterställning inbyggd i Storage Engines initiering. MyISAM gör det inte

METOD #3 :Använd Aria istället för MyISAM

Aria är MariaDBs drop-in ersättare för MyISAM. Den har kraschåterställningsmekanismer för enskilda tabeller.

METOD #4 :Döda inte -9 på mysqld

Om mysqld kraschar, avsiktligt eller ofrivilligt, kommer rubrikinformation för alla öppna MyISAM-tabeller att få dem att krascha. Undvik att manuellt döda mysqld.




  1. Hur infogar man flera rader i en enkel infogningssats?

  2. Inte unik tabell/alias

  3. Är din databas säker? Tänk om

  4. Kategorihierarki (PHP/MySQL)