Obnoviť MySQL tabuľky, keď len .frm súbory a. ibd sú k dispozícii

Ako riešiť “Mysql chyba #1146 -Tabuľka neexistuje” spôsobené premiestnením súborov .IDB (InnoDB) priamo medzi adresáre (tabuľkový priestor).

logo_mysql

Problém

Mnohé z problémov, ktoré máme sú problémy, ktoré sme vytvorili. Mal len nastaviť stránky pomocou WordPress a myslel: Ako asi vidieť, ako to funguje v PHP 7? ok, ako môj WampServer používa PHP 5.6, Takže som musel “šťastný” nápad pre upgrade WampServer 2.5 (Apache 2.4.9, MySQL-5.6.17, PHP 5.5.12) pre WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP a Php 7.0.10).

samozrejme, spustiť zálohovanie, ale môj veľký sklz bolo vybrať nevyvážať SQL z takýchto stránok, Namiesto toho, len urobil kópiu súborov databázy MySQL (MySQL/data) a uplatňovanie (www/stránky). Bol som presvedčený, že to bude fungovať, ako inokedy.

Po inštalácii nového WampServer s PHP 7, dať záložné súbory a aplikácie späť, len keď som išiel na test prehliadača, neukázal stránky, ale displej WordPress inštalácie, ako keby nové stránky. Zmrazil up! Otvorte PHPMyAdmin a skontrolujte, či databáza bola Ok a videl som, že, Napriek tomu sú uvedené v databáze, Keď ste klikli na vrchole tabuľky pre zobrazenie údajov chybové hlásenie:

  MySQL Chyba #1146 -Tabuľka <TABLE_NAME> doesn "t existujú

Som hľadal a len som zistil, že môžete len kopírovať alebo presúvať súbory priamo do iného adresára MySQL MySQL, ak sú súbory typu MyISAM, Tí sa frm príponu súboru. MYD. MYI. Neviem, čo sa stalo, ale moja databáza sa objavil ako InnoDB (.frm a. idb). Bohužiaľ, až po skutočnosť, že MySQL upozornení dokumentácie:

  Nemôže voľne pohybovať .IBD súbory medzi databázu adresárov na Môžete s MyISAM Tabuľka súborov. 
  Definícia tabuľky, uložené v InnoDB zdieľané tablespace obsahuje názov databázy. 
  Transakcie identifikácie a Denník poradové čísla uložené v súboroch tablespace sa líšia aj medzi databázami.

Riešenie

Musím urobiť nejaké jednoduché riešenie, ale bude popisovať tu jediný, ktorý naozaj pracoval pre mňa, Hoci sa zdá oveľa zložitejšie, nájdené v Post “Obnovenie tabuľku(s) MySQL databázy pri frm alebo ibd súbory sú k dispozícii iba“.

Pred, Avšak, titul vedomostí, Pamätajte si, že vzhľadom k tomu, InnoDB typu, MySQL stráž štruktúry súborov a údajov v ibd .frm.. Dosť teórie, Poďme Dostaň sa k jadru!

Krok 1: Znova vytvoriť štruktúru súborov .frm

Ako povedal, frm obsahuje štruktúru tabuľky. Najprv musíme získať túto štruktúru potom vyplňte údaje. Môžete to urobiť 3 rôzne metódy opísané nižšie, ale pred, Dovoľte mi povedať niečo o “MySQL Utility”.

MySQL Utility | mysqlfrm

Ak nemáte v úmysle používať prvý metódu navrhované (Online) Takže musíte použiť nástroj “mysqlfrm” poskytovaný “MySQL Utility“.

Tento nástroj bude extrahovať štruktúra údajov a generovať vytvorenie tabuľky SQL skriptu. Pre tento, Na stiahnutie “MySQL Utility” (niečo ako mysql-Utility-1.6.4-winx64.msi) a nainštalujte ju.

Otvorte konzolu (Príkaz / Z) a použiť CD príkaz presunúť predvolený inštalačný adresár (niečo ako C:\C:Program FilesMySQLMySQL pomôcky 1.6\). Všimnite si, že v tomto adresári je spustiteľný súbor mysqlfrm.exe.

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

Vyberte iba jednu z metód nižšie získať svoje štruktúry tabuľky obsiahnuté v súbore .frm:

1º Metóda | Online

1. Prejdite na webovú lokalitu HTTPS://Recovery.twindb.com/;
2. Kliknite na ponuku “Obnoviť štruktúru” a potom v “frm súbor z.“;
3. Kliknite na tlačidlo “Prehliadač…” a vyberte súbor frm; a
4. Kliknite na tlačidlo “Upload” a skript vytvorenie tabuľky sa zobrazia na obrazovke.

Umožňuje odoslať viac súborov frm raz generovanie jediného skriptu s všetky tabuľky. Len sa vám vytvoriť zip s jeho .frm pred “Prehliadač/Upload”.

2º Metóda | Pomocou –diagnostické

/* Všeobecný príklad */
   mysqlfrm-diagnostické "<zdroj/cesta>/MyTable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Príklad v praxi s tabuľkou wp_posts.frm WordPress */
   mysqlfrm --diagnostické "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Metóda | Pomocou –Server

/* Všeobecný príklad */
  mysqlfrm-server=koreň:mypassword@localhost-port=3311 "<zdroj/cesta>/MyTable.frm" > "<Cieľová cesta />/recovered_mytable.SQL"
 
/* Príklad v praxi s tabuľkou wp_posts.frm WordPress */
  mysqlfrm --Server=koreň@localhost --Port=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.frm" > "(C):\recovered_wp_posts.SQL"

Nepoužívajte MySQL port! Vybrať ktorékoľvek iné dostupné. Všimnite si, že príkaz presmerovanie výstup do súboru .SQL, ktorý je uložený v zadanej ceste (v prípade, (C):).

Krok 2: Znovu vytvorte tabuľku v databáze

V novej databáze, vytvoriť tabuľku s generované skript v kroku 1. Osobne Nainstaloval čistú verziu WampServer a použiť PHPMyAdmin (http://localhost/phpmyadmin /) vytvoriť databázu a importovať SQL skriptu vytvorili v kroku 1 (recovered_wp_posts.SQL). Tento skript vytvorí 2 súbory v adresári databázy MySQL:

  SUA_TABELA.frm SUA_TABELA.IDB

V mojom prípade, Tieto súbory boli vytvorené v (C):\wamp64binmysqlmysql5.7.14data<moje miesto>. IE, Pozrite sa na inštaláciu MySQL a Všimnite si, že v adresári dátum Bude existovať databázy a dva súbory uvedené.

Krok 3: Odstránenie nový súbor .IDB

Odstránenie nový súbor .IDB, spustite nasledovný príkaz SQL:

/* Všeobecný príklad */
  ALTER tabuľky mytable ZAHODIŤ TABLESPACE;
 
/* Príklad v praxi s wp_posts tabuľke WordPress */
  ZMENIŤ tabuľku wp_posts ZAHODIŤ TABLESPACE;

Tento príkaz odstráni prepojenie medzi tabuľkou a tabuľkový priestor (Kde sú fyzicky uložené súbory databázy), a odstrániť súbor .IDB.

Krok 4: Kopírovať starý súbor .IDB

Pôvodný súbor .IDB (obsahuje údaje) je potrebné skopírovať na miesto, ktorý dostal odstránený v .IDB kroku 3. Použite Ctrl + C a Ctrl + V, alebo zabiť pomocou príkazového riadka.

Krok 5: Opätovná aktivácia tabuľky

Nefunkčný odkaz v kroku 3 musí byť obnovená spolu s nasledujúci príkaz:

/* Všeobecný príklad */
  ALTER tabuľky mytable IMPORT TABLESPACE;
 
/* Príklad v praxi s wp_posts tabuľke WordPress */
  ZMENIŤ tabuľku wp_posts IMPORT TABLESPACE;

Nebojte sa, ak dostanete nejaké upozornenia, Avšak, To by mohlo byť všeobecné poruchy objavujú nasledujúca chyba:

  #1808 - Nesúlad schémy (Tabuľka má formát riadka ROW_TYPE_DYNAMIC, .IBD súbor má formát riadka ROW_TYPE_COMPACT.)

V tomto prípade, To sa stalo kvôli inak ako mysql 5.7.14 (NOVÉ) vytvára predvolenú tabuľku v porovnaní s Mysql-5.6.17 (STARÉ), bez ROW_FORMAT = kompaktná.

Tak, Ak používate MySQL > = mysql 5.7.14, všetko čo musíte urobiť, je pridať ROW_FORMAT = kompaktný v definícii Tvorba tabuliek.

  Vytvorenie tabuľky "wp_posts" (. . .) MOTOR=InnoDB ROW_FORMAT=kompaktné

E Outros erros

Apenas para deixar registrado, Antes de obter sucesso na extração de dados urobiť .frm, tívne alguns erros:

  # Zdrojom na localhost: ... pripojený.
  # Spustenie splodil servera na port 3304 ... Chyba pri pokuse zastaviť nepodarilo splodil server.  Proces id = 6648.
  CHYBA: Spawn server zlyhalo. Klon chyba servera: Nedá sa komunikovať so nové stupňa. Identifikácia procesu = 6648.. K diagnostike, znovu spustite nástroj a použitie na --·Rove≥ možnosť Zobraziť správy od serveru splodil a opravte prípadné chyby predstavila a potom znova spustite pomôcku.
  ÚSPECH: Proces s identifikáciou PID 6648 (podradený proces PID 7264) bol ukončený.
Traceback (posledný hovor posledné):
  Súbor "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", riadok 27, v <modul>
  Súbor "scripts\mysqlfrm.py", riadok 422, v <modul>
  Súbor ".\mysql\utilities\command\read_frm.py", riadok 439, v read_frm_files
  Súbor ".\mysql\utilities\command\read_frm.py", riadok 166, v _spawn_server
  Súbor ".\mysql\utilities\command\serverclone.py", riadok 180, v clone_server
  Súbor ".\mysql\utilities\common\tools.py", riadok 273, v get_mysqld_version IOError: [Errno 13] Prístup bol odmietnutý: "version_check"

Žiadna caso específico do WordPress, potrebujete odstrániť skript, ktorý generuje SQL generované pod. frm, všetky položky predvolené ‘0000-00-00 00:00:00’, inak, túto chybu zaregistruje:

  #1067 - Predvolená hodnota (predvolené) neplatí pre "comment_date"

To je všetko!

Písma

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

Celkový počet návštev: 21446

12 pripomienky k “Obnoviť MySQL tabuľky, keď len .frm súbory a. ibd sú k dispozícii

  1. Rodrigo povedal:

    Čo robiť, keď sa zobrazí chybové hlásenie: #1815 – Vnútorná chyba. Nemôžete obnoviť LSNs v tabuľke “moje miesto”.”myTable”: Štruktúry problé.
    Môžete spustiť vloží údaje manuálne? Ako to urobiť?
    Pretože už Ďakujem vám.

  2. Cristian U povedal:

    Ahoj Taylor,

    Ako ste sa vyriešiť túto chybu:
    CHYBA: Spawn server zlyhalo. Klon chyba servera: Nemôže komunikovať s novú inštanciu. Proces id = 6648.. K diagnostike, znovu spustite nástroj a použite –·Rove≥ možnosť Zobraziť správy od serveru splodil a opravte prípadné chyby predstavila a potom znova spustite pomôcku.
    ÚSPECH: Proces s identifikáciou PID 6648 (podradený proces PID 7264) bol ukončený.

    Naďalej dostávať rovnakú správu a don t vedieť ako ´ to vyriešiť.

    vďaka

  3. Reginaldo Luiz de Freitas povedal:

    Gratulujeme Taylor, ale didaktické nemožné!! vy ste rovnakí!

    pusu a vďaka za vaše zdieľanie skúseností!

nechať odpoveď

E-mailová adresa nebude zverejnený. Povinné polia sú označené *