2010-02-22 5 views
6

Eine sehr wichtige Datenbank ist beschädigt, die auf einem freigegebenen Webhost auf dem Server saß, und ich habe nicht gesichert. Die Tabelle enthält eine große Liste sehr wichtiger E-Mail-Adressen. Ich kann eine Tabelle, aber wenn ich eine der Tabellen mit Navicat oder phpMyAdmin öffnen, bekomme ich folgende Fehlermeldung:Wiederherstellen einer MySQL-Datenbank: Falsche Informationen in der Datei: './xxx.frm'

falsche Informationen in der Datei: ‚./the-table-name.frm‘

Ich konnte die .frm-Dateien, die mit der Datenbank verknüpft sind, vom Webhost abrufen.

Dort sind andere Daten drin, aber wenn ich wenigstens die E-Mail-Adressen bekommen könnte, wäre ich in Ordnung.

Wie stelle ich diese Datenbank wieder her? Ich wäre bereit jemanden dafür zu bezahlen.

Antwort

14

Dies gehört zu serverfault.

Erstens, .FRM-Dateien enthalten keine Ihrer "Daten". Sie sind einfach die Definition der Tabelle.

Wenn alle der folgenden Bedingungen erfüllt sind:

  • Die Tabelle mit dem Speicher-Engine MyISAM verwendet
  • Sie kennen die CREATE TABLE Anweisung erforderlich, um den Tisch

dann neu , tun Sie folgendes:

  1. Stopp MySQL
  2. Sichern Sie Ihre table_name.frm, table_name.MYI, tabelle.MYD' Dateien
  3. sie von Ihrem MySQL-Datenverzeichnis löschen (/ var/lib/mysql in der Regel)
  4. starten MySQL
  5. CREATE Tabelle wieder
  6. Stoppen Sie MySQL
  7. Kopieren Sie die .MYD und .MYI-Dateien zurück in das Datenverzeichnis und ersetzt die dort.
  8. Start MySQL
  9. ???
  10. Profit
+0

Danke ... aber bedeutet das, wenn ich auf InnoDB bin, bin ich geschraubt? – Wolverine

+0

Nun, InnoDB ist "crashsicher" und viel widerstandsfähiger als MyISAM. Eine .frm-Datei kann nicht durch normale mysql-Verwendung beschädigt werden. Ohne zu wissen, was du getan hast, kann ich dir nicht helfen. Unabhängig davon, es geht über den Rahmen von SO hinaus, da es nicht programmierungsbezogen ist. – hobodave

+0

es funktioniert nicht für mich, noch beschädigte Tabelle – nick

0

ich ein ähnliches Problem hatte, stellt sich die MySQL InnoDB-Engine heraus ausgeschaltet war (ich in der Lage war, über phpMyAdmin zu überprüfen, ein Bash Pro könnte Ihnen sagen, wie es andere Möglichkeiten zu tun). In meinem Fall war es einfach, MySQL neu zu starten, aber vielleicht möchten Sie Ihre Konfiguration überprüfen, wenn sich dort etwas geändert hat.

0

Sie können die folgenden Befehle versuchen: CHECK TABLE Tabellenname

Wenn diese "korrupt" Nachricht Versuch gibt:

REPAIR TABLE Tabellenname

Eigentlich sind diese nicht mein ähnliches Problem lösen, aber sie können für jemanden nützlich sein.