Ich habe eine MySQL InnoDB, die alle Datenbanktabellendateien enthält, aber MySQL sieht sie nicht und lädt sie nicht.
Das Problem geschah , weil ich diese drei Dateien gelöscht: ibdata1
, ib_logfile0
undib_logfile1
weil ich Probleme mit dem Start von mysql hatte und ich las, dass ich sie entfernen wollte, weil MySQL sie einfach neu generiert (ich weiß, ich hätte sie sichern sollen, tat es aber nicht).
Was kann ich tun, damit MySQL die Tabellen wieder anzeigt?
about_member.frm site_stories.frm
about_member.ibd site_stories.ibd
db.opt stories.frm
FTS_00000000000000bb_BEING_DELETED_CACHE.ibd stories.ibd
FTS_00000000000000bb_BEING_DELETED.ibd story_comments.frm
FTS_00000000000000bb_CONFIG.ibd story_comments.ibd
FTS_00000000000000bb_DELETED_CACHE.ibd story_likes.frm
FTS_00000000000000bb_DELETED.ibd story_likes.ibd
FTS_00000000000000f5_BEING_DELETED_CACHE.ibd story_tags.frm
FTS_00000000000000f5_BEING_DELETED.ibd story_tags.ibd
FTS_00000000000000f5_CONFIG.ibd story_views.frm
FTS_00000000000000f5_DELETED_CACHE.ibd story_views.ibd
FTS_00000000000000f5_DELETED.ibd story_view_totals.frm
member_favorites.frm story_view_totals.ibd
member_favorites.ibd tags.frm
members.frm tags.ibd
members.ibd
Antworten:
Dies ist der Grund, warum MySQL diese Dateien nicht sehen kann: Der System-Tablespace (ibdata1) verfügt über ein Storage-Engine-spezifisches Datenwörterbuch, mit dem InnoDB die potenzielle Verwendung von Tabellen ermitteln kann:
Das Verschieben von InnoDB-Tabellen von einem Ort an einen anderen erfordert Befehle wie
Hier ist ein Teil der MySQL 5.5-Dokumentation, in der erklärt wird, was zu beachten ist
In Anbetracht dieser Einschränkungen und Protokolle wird hier eine Vorgehensweise vorgeschlagen
In diesem Beispiel versuchen wir, die
tags
Tabelle in dermydb
Datenbank wiederherzustellenSCHRITT 1
Stellen Sie sicher, dass Sie Sicherungen von diesen
.frm
und.ibd
Dateien in haben/tmp/innodb_data
SCHRITT 2
Holen Sie sich die
CREATE TABLE tags
Anweisung und führen Sie sie aus alsCREATE TABLE mydb.tags ...
. Stellen Sie sicher, dass es sich genau um die gleiche Struktur wie das Original handelttags.frm
SCHRITT 3
Löschen Sie die leere
tags.ibd
mit MySQLSCHRITT 4
Bringen Sie die Sicherungskopie von
tags.ibd
SCHRITT 5
Fügen Sie
tags
dem InnoDB Data Dictionary eine Tabelle hinzuSCHRITT 6
Testen Sie die Zugänglichkeit der Tabelle
Wenn Sie normale Ergebnisse erhalten, gratulieren Sie zum Import einer InnoDB-Tabelle.
SCHRITT 7
Bitte löschen Sie in Zukunft ibdata1 und seine Protokolle nicht mehr
Versuche es !!!
Ich habe solche Dinge schon einmal besprochen
Apr 23, 2012
: MySQL: Wie kann ich eine in einer .frm- und einer .ibd-Datei gespeicherte Tabelle wiederherstellen?Sep 28, 2011
: So stellen Sie eine InnoDB-Tabelle wieder her, deren Dateien verschoben wurdenVORBEHALT
Was ist, wenn Sie die Tabellenstruktur der nicht kennen
tags
?Es gibt Tools, mit denen die Anweisung CREATE TABLE nur mithilfe der
.frm
Datei abgerufen werden kann. Ich habe auch dazu einen Beitrag geschrieben: Wie kann ich das Tabellenschema nur aus der .frm-Datei extrahieren? . In diesem Beitrag habe ich eine .frm-Datei von einer Linux-Box auf einen Windows-Computer kopiert, das Windows-Tool ausgeführt und dieCREATE TABLE
Anweisung erhalten.quelle
weblyize
.tags
'existiert. Bitte verwerfen Sie den Tablespace vor dem Import. Also versuche ich zuerst den alter Tablespace auszuführen und erhalte diesen Fehler: FEHLER 1146 (42S02): Die Tabelle 'weblyize.tags' existiert nicht . Was kann ich tun?CREATE TABLE ...
dann Ihren Schritten gefolgt! Sie haben mich davor bewahrt, sie zu 100% von Grund auf neu schreiben zu müssen! Es wurden keine Fremdschlüssel importiert, aber das ist in Ordnung. Ich kann das selbst tun! Noch einmal Danke!Ich habe die gleiche Situation, kann nicht löschen oder bestimmte tblname erstellen. Mein Fixverfahren ist:
Stoppen Sie MySQL.
Entfernen Sie ib_logfile0 und ib_logfile1.
Tblname-Dateien entfernen. WARNUNG: Dadurch werden Ihre Daten dauerhaft gelöscht
Starten Sie MySQL.
quelle
Ich hatte auch dieses Problem. Ich habe versehentlich gelöscht
ibdata1
und alle meine Daten gingen verloren.Nach ein bis zwei Tagen Suche in Google und SO fand ich endlich eine Lösung, die mir das Leben rettete (ich hatte so viele Datenbanken und Tabellen mit riesigen Datensätzen).
Erstellen Sie eine Sicherungskopie von
/var/lib/mysql
Wiederherstellen des Tabellenschemas aus einer
.frm
Datei mit dbsake (es gab eine andere Option! mysqlfrm . Aber es hat bei mir nicht funktioniert)Erstellen Sie eine neue Tabelle (mit neuem Namen) mit exportiertem Schema.
Verwerfen Sie neue Tabellendaten mit diesem Befehl:
/var/lib/mysql/database-name
ob Daten (.ibd
Dateien) für alte Tabellen vorhanden sind, und löschen Sie sie.quelle