MySQL tabellen herstellen wanneer alleen de .frm bestanden en ibd beschikbaar zijn

Hoe op te lossen “MySQL fout #1146 -Tabel bestaat niet” veroorzaakt door het verplaatsen van bestanden van de .IDB (InnoDB) rechtstreeks tussen mappen (Tablespace).

logo_mysql

Probleem

Veel van de problemen die wij hebben zijn problemen die we gemaakt. Ik had net een Site met behulp van WordPress instelt en dacht dat: Hoe ongeveer zien hoe dit werkt in PHP 7? OK, zoals mijn WampServer PHP gebruikt 5.6, zodoende mij had voor “Gelukkig” idee om te upgraden de WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, PHP 5.5.12) voor WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP en Php 7.0.10).

Natuurlijk, gestart door back-up, maar mijn grote slip was kiezen niet voor het exporteren van SQL uit deze Site, In plaats daarvan, zojuist een kopie van de bestanden van MySQL (MySQL/gegevens) en de toepassing (www/site). Ik was ervan overtuigd dat zou werken, Als de andere keer.

Na het installeren van de nieuwe WampServer php 7, Zet de back-upbestanden en de achterkant van de toepassing, alleen toen ik ging om te testen door de browser, de Site kwam niet opdagen, maar het scherm van de WordPress-installatie, alsof het een nieuwe Site. Bevroor omhoog! Open PHPMyAdmin en controleer of de database Ok was en ik zag dat, Ondanks het feit dat in de databank zijn vermeld, Wanneer u hebt geklikt op de bovenkant van de tabel de gegevens het volgende foutbericht weergeven:

  MySQL Fout #1146 -Table <TABLE_NAME> doesn ' t bestaan

Mij zijn geweest grondig en ik heb net ontdekt dat je alleen kunt kopiëren of verplaatsen van de bestanden direct naar een andere directory van de MySQL MySQL als bestanden MyISAM type, deze met frm-bestandsextensie. MJD. MYI. Ik weet niet wat er gebeurde, maar mijn database verscheen als InnoDB (.frm and. idb). Helaas, alleen na het feit dat MySQL documentatie gewaarschuwd:

  U kunt niet vrij verplaatsen .IBD bestanden tussen database mappen de u kunt met MyISAM tabel bestanden. 
  De tabeldefinitie opgeslagen in de gedeelde InnoDB tablespace omvat de naam van de database. 
  De transactie-id's en logboek reeks getallen die zijn opgeslagen in de bestanden tablespace ook verschillen tussen databases.

Oplossing

Cheguei een ver algumas soluções simples, Mas vou descrever aqui een única que realmente funcionou para mim, apesar de parecer bem mais complexa, encontrada geen Post “Herstel van de tabel(s) in MySQL database wanneer frm of ibd-bestanden alleen beschikbaar zijn“.

Antes, Echter, een título de conhecimento, Vale lembrar que em relação ao tipo InnoDB, MySQL bewaken de structuur in bestanden en gegevens in .frm. ibd. Genoeg theorie, Laten we snijden aan de jacht!

Stap 1: De structuur van de .frm-bestanden opnieuw te maken

Zoals gezegd, de frm bevat de structuur van de tabel. Allereerst moeten we deze structuur dan het invullen van de gegevens ophalen. U kunt dit doen 3 verschillende methoden die hieronder worden beschreven, maar voordat, Laat me je iets vertellen over de “MySQL Utilities”.

MySQL Utilities | mysqlfrm

Als u niet van plan bent met de eerste methode voorgesteld (Online) Zo moet u het hulpprogramma gebruiken “mysqlfrm” geboden door de “MySQL Utilities“.

Dit hulpmiddel zal uitpakken van de gegevensstructuur en de tabel creatie SQL-script te genereren. Voor dit, Downloaden “MySQL Utilities” (zoiets mysql-hulpprogramma's-1.6.4-winx64.msi) en installeer het.

Open de console (Opdracht / Van de) en gebruik de opdracht CD om het verplaatsen van de standaardmap voor de installatie (zoiets C:\C:Program FilesMySQLMySQL Utilities 1.6\). Merk op dat er in deze map het uitvoerbare bestand is mysqlfrm.exe.

  CD "C:\C:Program FilesMySQLMySQL Utilities 1.6"

Één van de onderstaande de structuur van de tabel in de .frm bestanden uitpakken methoden kiezen:

1º Methode | Online

1. Ga naar de website HTTPS://Recovery.twindb.com/;
2. Klik op het menu “Herstellen van structuur” en dan in “frm bestand uit.“;
3. Klik op de knop “Browser…” en selecteer uw frm-bestand; en
4. Klik op de knop “Uploaden” en de tabel creatie script wordt weergegeven op het scherm.

Het is mogelijk om te verzenden meerdere bestanden frm eenmaal het genereren van een enkel script met alle tabellen. Gewoon om u te laten maken een .zip met alle haar .frm vóór “Browser/Upload”.

2º Methode | Met behulp van –diagnostische

/* Generiek voorbeeld */
   mysqlfrm-diagnose "<bronpad />/mytable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Voorbeeld in de praktijk met de wp_posts.frm-tabel van de WordPress */
   mysqlfrm --diagnostische "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Methode | Met behulp van –Server

/* Generiek voorbeeld */
  mysqlfrm-server=wortel:mijnwachtwoord@localhost-port=3311 "<bronpad />/mytable.frm" > "<bestemming/pad>/recovered_mytable.SQL"
 
/* Voorbeeld in de praktijk met de wp_posts.frm-tabel van de WordPress */
  mysqlfrm --Server=wortel@localhost --poort=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.frm" > "(C):\recovered_wp_posts.SQL"

Gebruik niet de MySQL poort! Kies een andere beschikbaar. Merk op dat de opdracht wordt de uitvoer omgeleid naar een .SQL-bestand dat is opgeslagen in het opgegeven pad (in het geval, (C):).

Stap 2: De tabel in uw database opnieuw te maken

In een nieuwe database, Maak een tabel met de gegenereerde script in stap 1. Ik persoonlijk een schone versie van WampServer geïnstalleerd en gebruikt PHPMyAdmin (http://localhost/phpmyadmin /) de database maken en importeren van de SQL-script dat is gemaakt in stap 1 (recovered_wp_posts.SQL). Dit script zal maken 2 bestanden in de map van uw MySQL database:

  SUA_TABELA.frm SUA_TABELA.IDB

In mijn geval, Deze bestanden zijn gemaakt (C):\wamp64binmysqlmysql5.7.14data<mijn stoel>. IE, Kijk voor uw MySQL installatie en merk op dat in de directory datum Er zullen uw database en de twee bestanden vermeld.

Stap 3: Het nieuwe .IDB-bestand verwijderen

Het nieuwe .IDB bestand te verwijderen, Voer de volgende SQL-opdracht:

/* Generiek voorbeeld */
  ALTER TABLE mytable negeren TABLESPACE;
 
/* Voorbeeld in de praktijk met de tabel wp_posts van WordPress */
  ALTER TABLE wp_posts negeren TABLESPACE;

Deze opdracht verwijdert u de koppeling tussen de tabel en de tablespace (Waar worden fysiek opgeslagen de databasebestanden), en verwijder het bestand .IDB.

Stap 4: Het oude .IDB bestand kopiëren

Het oorspronkelijke bestand van de .IDB (de die bevat de gegevens) moet worden gekopieerd naar de plaats die in de .IDB stap heb verwijderd 3. Gebruik Ctrl + C en Ctrl + V of doden jezelf met behulp van de opdrachtregel.

Stap 5: Activeren van de tabel

De verbroken koppeling in stap 3 moet worden hersteld met de volgende opdracht:

/* Generiek voorbeeld */
  ALTER TABLE mytable importeren TABLESPACE;
 
/* Voorbeeld in de praktijk met de tabel wp_posts van WordPress */
  ALTER TABLE wp_posts importeren TABLESPACE;

Maak je geen zorgen als u sommige waarschuwingen ontvangen, Echter, Het zou kunnen algemene storing verschijnen de volgende fout zijn:

  #1808 - Schema mismatch (Tabel heeft ROW_TYPE_DYNAMIC rij-indeling, .IBD bestand heeft ROW_TYPE_COMPACT rij-indeling.)

In dit geval, Dit gebeurde anders aan dan de mysql 5.7.14 wegens (Nieuw) Hiermee maakt u een standaardtabel in vergelijking met de Mysql-5.6.17 (OUDE), SEM o ROW_FORMAT = compact.

Dus, Se você estáusando MySQL > = ao mysql5.7.14, Tudo que você precisa fazer é acrescentar ROW_FORMAT = compact nb definição de criação da tabela.

  CREATE TABLE 'wp_posts' (. . .) MOTOR=InnoDB ROW_FORMAT=Compact

Outros erros

Apenas para deixar registrado, antes de obter sucesso nb extração de Dados Pessoais doen .frm, TiVe alguns erros:

  # Bron op localhost: ... aangesloten.
  # De actieve server starten op poort 3304 ... FOUT probeert te stoppen is mislukt actieve server.  Proces-id = 6648.
  FOUT: Spawn serverbewerking mislukt. De fout van de server van de kloon: Niet in staat om te communiceren met Nieuw aanleg. Proces-id = 6648.. Voor de diagnose van, Voer het hulpprogramma opnieuw en gebruik de --Verbosity optie te bekijken van de berichten van de actieve server en corrigeer eventuele fouten gepresenteerd dan het hulpprogramma opnieuw uitvoeren.
  SUCCES: Het proces met PID 6648 (kind proces van PID 7264) is beëindigd.
Traceback (meest recente Bel laatst):
  Bestand "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", lijn 27, in <module>
  Bestand "scripts\mysqlfrm.py", lijn 422, in <module>
  Bestand ".\mysql\utilities\command\read_frm.py", lijn 439, in read_frm_files
  Bestand ".\mysql\utilities\command\read_frm.py", lijn 166, in _spawn_server
  Bestand ".\mysql\utilities\command\serverclone.py", lijn 180, in clone_server
  Bestand ".\mysql\utilities\common\tools.py", lijn 273, in get_mysqld_version IOError: [Errno 13] Toestemming geweigerd: 'version_check'

In het specifieke geval van WordPress, u wilt verwijderen van het script dat de SQL-code gegenereerd onder gegenereerd. frm, alle posten standaard ‘0000-00-00 00:00:00’, anders, de fout zal vangen:

  #1067 - Standaardwaarde (standaard) niet geldig voor 'comment_date'

Thats it!

Lettertypen

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

Totaal aantal treffers: 14898

10 Reacties op “MySQL tabellen herstellen wanneer alleen de .frm bestanden en ibd beschikbaar zijn

  1. Rodrigo zei:

    Wat te doen als u het volgende foutbericht weergegeven: #1815 – Interne fout. Intabel LSNs de sitedefinitie niet hersteld “mijn stoel”.”myTable”: Beschadiging van de structuur van de gegevens.
    Ik kan de inzetstukken van gegevens handmatig uitvoeren? Hoe dit te doen?
    Aangezien al bedankt.

  2. Cristian U zei:

    Hallo Taylor,

    Hoe heeft u deze fout opgelost:
    FOUT: Spawn serverbewerking mislukt. De fout van de server van de kloon: Niet in staat om te communiceren met de nieuwe aanleg. Proces-id = 6648.. Voor de diagnose van, Voer het hulpprogramma opnieuw uit en gebruik de –Verbosity optie te bekijken van de berichten van de actieve server en corrigeer eventuele fouten gepresenteerd dan het hulpprogramma opnieuw uitvoeren.
    SUCCES: Het proces met PID 6648 (kind proces van PID 7264) is beëindigd.

    Ik blijf ontvangen hetzelfde bericht en ik don´t weten hoe op te lossen.

    Bedankt

Laat een antwoord achter

De uw e-mailadres zal niet worden gepubliceerd. Verplichte velden zijn gemarkeerd met *