MySQL-Tabellen zu erholen, wenn nur der .frm-Dateien u. Ibd sind verfügbar

Wie zu lösen “MySQL-Fehler #1146 -Tabelle ist nicht vorhanden” verursacht durch Verschieben von .IDB Dateien (InnoDB) direkt zwischen den Verzeichnissen (Tablespace).

logo_mysql

Problem

Viele der Probleme, die wir haben sind Probleme, die wir geschaffen. Ich hatte gerade eine Website mit WordPress und dachte: Wie wäre zu sehen, wie das in PHP funktioniert 7? Okay, als meine WampServer verwendet PHP 5.6, Also musste ich “glücklich” Idee, aktualisieren Sie die WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, PHP 5.5.12) Abs. WampServer 3.0.6 (Apache 2.4.23., MySQL 5.7.14, 5.6.25 PHP und Php 7.0.10).

Natürlich, begonnen von backup, aber meine große Rutsch war nicht zu SQL von solchen Website exportieren wählen, Stattdessen, soeben eine Kopie der MySQL-Dateien (MySQL/Daten) und die Anwendung (Www-Seiten). Ich war zuversichtlich, dass es funktionieren würde, wie die anderen Male.

Nach der Installation der neuen WampServer mit PHP 7, Legen Sie die backup-Dateien und die Anwendung zurück, nur wenn ich ging durch den Browser testen, nicht zeigen auf der Website., aber der Bildschirm der WordPress-Installation als wäre es eine neue Website. Erstarrte! Öffnen Sie PHPMyAdmin und überprüfen, ob die Datenbank war "OK" und ich sah, dass, Trotz in der Datenbank aufgeführt, Wenn Sie auf der Spitze der Tabelle zum Anzeigen der Daten folgende Fehlermeldung geklickt haben:

  MySQL Fehler #1146 -Tabelle <TABLE_NAME> Doesn ' t vorhanden

Ich habe gesucht und ich habe gerade herausgefunden, dass Sie nur kopieren oder verschieben Sie die Dateien direkt in ein anderes MySQL MySQL-Verzeichnis, wenn Dateien MyISAM Typ, diejenigen mit Frm-Datei-Endung. MYD. MYI. Ich weiß nicht, was passiert ist, aber meine Datenbank erschien als InnoDB (.FRM und idb). Leider, erst nach der Tatsache, dass MySQL Dokumentation alarmiert:

  Sie können nicht frei bewegen .IBD-Dateien zwischen Datenbankverzeichnisse wie Sie können mit MyISAM-Tabelle-Dateien. 
  Die Definition der Tabelle in den InnoDB geteilt Tablespace gespeichert enthält den Namen der Datenbank. 
  Die Transaktions-IDs und Log Sequenznummern in der Tablespace-Dateien gespeicherten unterscheiden sich auch zwischen Datenbanken.

Lösung

Cheguei ein Ver RACCONTI Soluções Simples, Mas Vou Descrever Aqui ein Única Que Realmente Funcionou Para mim, Apesar de Parecer Bem Mais complexa, Encontrada keine Post “Wiederherstellung der Tabelle(s) in MySQL-Datenbank beim Frm oder Ibd-Dateien nur verfügbar sind“.

Antes, porém, ein Título de conhecimento, Vale ent Que Em Relação Ao Tipo InnoDB, MySQL zu schützen, seine Struktur in Dateien und Daten in FRM. ibd. Genug der Theorie, lets get down zu!

Passo 1: Die Struktur der .frm-Dateien neu erstellen

Wie gesagt, die Frm enthält die Struktur der Tabelle. Zunächst müssen wir diese Struktur, dann füllen Sie die Daten abrufen. Hierzu können Sie 3 verschiedene Methoden, die nachfolgend beschriebenen, aber bevor, Lassen Sie mich Ihnen etwas über die “MySQL-Dienstprogramme”.

MySQL-Dienstprogramme | mysqlfrm

Wenn Sie nicht beabsichtigen, die erste vorgeschlagene Methode verwenden (Online) Sie müssen also mit dem Hilfsmittel “mysqlfrm” zur Verfügung gestellt von der “MySQL-Dienstprogramme“.

Dieses Tool wird die Datenstruktur zu extrahieren und Tabellenerstellung SQL-Skript generieren. Für diese, Download “MySQL-Dienstprogramme” (so etwas wie Mysql-Dienstprogramme-1.6.4-winx64.msi) und installieren Sie es.

Öffnen Sie die Konsole (Befehl / Von der) und verwenden Sie den Befehl "CD" das Standard-Installations-Verzeichnis verschieben (so etwas wie C:\C:Program FilesMySQLMySQL Utilities 1.6\). Beachten Sie, dass in diesem Verzeichnis die ausführbare Datei ist mysqlfrm.exe.

  CD "C:\C:Program FilesMySQLMySQL Utilities 1,6"

Wählen Sie nur eine der Methoden aus, um die Struktur der Tabelle enthaltenen .frm-Dateien extrahieren:

1º Methode | Online

1. Besuchen Sie die website https://Recovery.twindb.com/;
2. Klicken Sie im Menü “Struktur zu erholen” und dann in “Frm-Datei aus.“;
3. Clique keine botão “Browser…” und wählen Sie die Frm-Datei; und
4. Clique keine botão “Upload” und die Tabellenskripts auf dem Bildschirm angezeigt werden.

Es ist möglich, mehrere Dateien Frm einmal generiert ein Skript mit allen Tabellen zu senden. Nur um euch eine .zip mit seiner FRM vor erstellen lassen “Browser/Upload”.

2º Methode | Mit Hilfe –Diagnose

/* Allgemeines Beispiel */
   Mysqlfrm-Diagnostik "<Quellpfad />/MyTable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Beispiel in der Praxis mit der wp_posts.frm-Tabelle der WordPress */
   mysqlfrm --Diagnose "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Methode | Mit Hilfe –Server

/* Allgemeines Beispiel */
  Mysqlfrm-server=Wurzel:meinkennwort@"localhost"-port=3311 "<Quellpfad />/MyTable.frm" > "<Zielpfad />/recovered_mytable.SQL"
 
/* Beispiel in der Praxis mit der wp_posts.frm-Tabelle der WordPress */
  mysqlfrm --Server=Wurzel@"localhost" --Hafen=3307 ""C:\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.FRM" > "C:\recovered_wp_posts.SQL"

Verwenden Sie nicht den MySQL port! Wählen Sie eine andere verfügbar. Beachten Sie, dass der Befehl leitet die Ausgabe in eine .SQL-Datei, die im angegebenen Pfad gespeichert ist (im Fall, C:).

Passo 2: Neu erstellen Sie die Tabelle in Ihrer Datenbank

In einer neuen Datenbank, Erstellen Sie eine Tabelle mit dem generierten Skript in Schritt 1. Ich persönlich eine saubere Version von WampServer installiert und verwendet PHPMyAdmin (http://"localhost" / Phpmyadmin /) Erstellen der Datenbank und das SQL-Skript in Schritt erstellt importieren 1 (recovered_wp_posts.SQL). Dieses Skript erstellt 2 Dateien in das Verzeichnis Ihrer MySQL-Datenbank:

  SUA_TABELA.FRM SUA_TABELA.IDB

Keine Meu caso, Diese Dateien wurden in erstellt. C:\wamp64binmysqlmysql5.7.14data<meinen Sitzplatz>. IE, Suchen Sie nach Ihrem MySQL-Installation und beachten Sie, dass im Verzeichnis Daten Es werden die Datenbank und die beiden genannten Dateien.

Passo 3: Entfernen Sie die neue .IDB-Datei

Die neue .IDB-Datei entfernen, führen Sie den folgenden SQL-Befehl:

/* Allgemeines Beispiel */
  ALTER TABLE Mytable verwerfen TABLESPACE;
 
/* Exemplo Na Prática com eine kauft Wp_posts tun WordPress */
  ALTER TABLE Wp_posts verwerfen TABLESPACE;

Este Comando entfernen o Link Entre ein kauft e o tablespace (Wo physisch gespeichert sind die Datenbankdateien), und entfernen Sie die .IDB-Datei.

Passo 4: Kopieren Sie die alte Datei .IDB

Die Originaldatei .IDB (die, die die Daten enthält) an die Stelle kopiert werden, die in der .IDB Schritt gelöscht habe 3. Verwenden Sie Strg + C und Strg + V, oder töten Sie sich selbst zu, indem mithilfe der Befehlszeile.

Passo 5: In der Tabelle zu reaktivieren

Die defekte Verbindung in Schritt 3 mit dem folgenden Befehl wiederhergestellt werden muss:

/* Allgemeines Beispiel */
  ALTER TABLE Mytable IMPORT TABLESPACE;
 
/* Exemplo Na Prática com eine kauft Wp_posts tun WordPress */
  ALTER TABLE Wp_posts IMPORT TABLESPACE;

Mach dir keine Sorgen Sie, wenn Sie einige Warnungen erhalten, porém, Es könnte sein, allgemeine Störung erscheint die folgende Fehlermeldung:

  #1808 - Schema Missverhältnis (Tabelle hat ROW_TYPE_DYNAMIC Zeilenformat, .IBD-Datei hat ROW_TYPE_COMPACT Zeilenformat.)

In diesem Fall, Dies geschah aufgrund anders als Mysql 5.7.14 (Neu) erstellt eine Standardtabelle im Vergleich zu Mysql-5.6.17 (ALT), SEM o ROW_FORMAT = kompakt.

Dann, Se Você Está Usando MySQL > = Ao mysql5.7.14, Tudo Que Você Precisa Fazer É Acrescentar ROW_FORMAT = kompakte Na Definição de Criação da kauft.

  CREATE TABLE 'Wp_posts' (. . .) MOTOR=InnoDB-ROW_FORMAT=kompakt

Outros erros

Apenas Para Deixar definieren, Antes de Obter Sucesso Na Extração de Dados tun FRM, Tive Alguns erros:

  # Quelle auf "localhost": ... verbunden.
  # Die erzeugten Server starten auf port 3304 ... Fehler beim Versuch zu stoppen konnte erzeugte server.  Prozess-Id = 6648.
  FEHLER: Spawn-Server fehlgeschlagen. Klon-Serverfehler: Nicht in der Lage zu kommunizieren Neu Instanz. Prozess-id = 6648.. Zur diagnose von, führen Sie das Dienstprogramm erneut und Verwenden Sie die --Ausführlichkeit Option zum Anzeigen von Nachrichten vom Server erzeugten und beheben Sie alle Fehler präsentiert, dann führen Sie das Dienstprogramm erneut.
  ERFOLG: Der Prozess mit der PID 6648 (Kind-Prozess von PID 7264) wurde beendet.
Traceback (jüngsten letzten anrufen):
  Datei "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", Linie 27, in <Modul>
  Datei "scripts\mysqlfrm.py", Linie 422, in <Modul>
  Datei ".\mysql\utilities\command\read_frm.py", Linie 439, im read_frm_files
  Datei ".\mysql\utilities\command\read_frm.py", Linie 166, im _spawn_server
  Datei ".\mysql\utilities\command\serverclone.py", Linie 180, im clone_server
  Datei ".\mysql\utilities\common\tools.py", Linie 273, in Get_mysqld_version IOError: [Errno 13] Zugriff verweigert: "Version_check"

Im konkreten Fall von WordPress, Sie müssen das Skript entfernen, die die SQL-Anweisung generiert unter generiert. Frm, alle Einträge Standard ‘0000-00-00 00:00:00’, Ansonsten, verfängt sich den Fehler:

  #1067 - Default-Wert (Standard) nicht gültig für "Comment_date"

Das wars!

Schriftarten

http://www.voxteneo.com/restoring-tables-mysql-database-frm-ibd-files-available/

https://medium.com/@alexquick/transporting-mysql-tablespaces-from-5-6-to-5-7-517c01345fbb#.72zermd8b

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

https://lanmenezesbr.wordpress.com/2014/10/21/mysql-erro-1146-table-doesnt-exist/

http://stackoverflow.com/questions/7759170/mysql-table-doesnt-exist-but-it-does-or-it-should

Total hits: 14914

10 Kommentare zu “MySQL-Tabellen zu erholen, wenn nur der .frm-Dateien u. Ibd sind verfügbar

  1. Rodrigo sagte:

    Was tun, wenn Sie die folgenden Fehlermeldung wird angezeigt: #1815 – Interner Fehler. LSNs kann nicht in Tabelle zurückgesetzt werden. “meinen Sitzplatz”.”myTable”: Beschädigung von Daten-Struktur.
    Die Einsätze der Daten können manuell ausgeführt werden? Como Fazer isso?
    Desde Já Te agradeço.

  2. Cristian U sagte:

    Hallo Taylor,

    Wie haben Sie diesen Fehler gelöst:
    FEHLER: Spawn-Server fehlgeschlagen. Klon-Serverfehler: Nicht in der Lage zu kommunizieren, neue Instanz. Prozess-Id = 6648.. Zur diagnose von, führen Sie das Dienstprogramm erneut aus und verwenden Sie die –Ausführlichkeit Option zum Anzeigen von Nachrichten vom Server erzeugten und beheben Sie alle Fehler präsentiert, dann führen Sie das Dienstprogramm erneut.
    ERFOLG: Der Prozess mit der PID 6648 (Kind-Prozess von PID 7264) wurde beendet.

    Ich erhalte die gleiche Meldung und ich weiß nicht, wie es zu lösen.

    Vielen Dank

Hinterlasse eine Antwort

Die e-Mailadresse wird nicht veröffentlicht. Pflichtfelder sind mit gekennzeichnet. *