sql >> Database >  >> RDS >> Mysql

MySQL-tabel is gemarkeerd als gecrasht

MyISAM-tabellen zijn heel gemakkelijk te crashen. Er is header-info in elke tabel die bijhoudt hoeveel open bestandshandles een MyISAM-tabel heeft.

Als mysqld crasht, heeft elke MyISAM-tabel die open bestandshandles had, nooit de mogelijkheid gehad om het aantal bestandshandles te verlagen bij het sluiten van elke bestandshandle. Dus als een nieuwe bestandshandle een MyISAM-tabel (.MYD-bestand) opent en mysqld ontdekt dat er een mismatch is tussen het aantal bestandshandles dat volgens de MyISAM-tabel open is en het aantal bestandshandles dat de MyISAM-tabel daadwerkelijk heeft geopend, is de tabel gecrasht verklaard.

Er zijn vier (4) methoden om dit aan te pakken:

METHODE #1:Automatische MyISAM-reparatie instellen

Zie mijn bericht https://dba.stackexchange.com/a/15079/877 over hoe u dit instelt bij een MySQL-herstart (15 maart 2012)

METHODE #2:Gebruik InnoDB in plaats van MyISAM

InnoDB heeft crashherstel ingebouwd in de initialisatie van de Storage Engine. MijnISAM niet

METHODE #3:gebruik Aria in plaats van MyISAM

Aria is MariaDB's drop-in vervanger voor MyISAM. Het bevat crashherstelmechanismen voor individuele tabellen.

METHODE #4:-9 niet doden op mysqld

Als mysqld crasht, opzettelijk of onvrijwillig, zal header-info voor alle geopende MyISAM-tabellen ze in een gecrashte toestand brengen. Voorkom dat u mysqld handmatig moet doden.




  1. Is er een reden om je zorgen te maken over de kolomvolgorde in een tabel?

  2. PID-fout bij het starten van mysql.server?

  3. Hoe lees ik een eigenschappenbestand en verbind ik een MySQL-database?

  4. Hoe DB-verzoeken onderscheppen? (MySQL)