Obnovit MySQL tabulky, když jen ibd a. .frm soubory jsou k dispozici.

Jak řešit “MySQL chyba #1146 -Tabulka neexistuje” způsobeno přesunutím souborů IDB (InnoDB) přímo mezi adresářů (tabulkový prostor).

logo_mysql

Problém

Mnohé z problémů, které máme jsou problémy, které jsme vytvořili. Jen jsem měl vytvořit web používající WordPress a myslel: Podíváme se, jak to funguje v PHP 7? Ok, jako můj WampServer používá PHP 5.6, Takže jsem musel “Veselé” nápad pro upgrade WampServer 2.5 (Apache 2.4.9, MySQL-5.6.17, PHP 5.5.12) pro WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP a Php 7.0.10).

Samozřejmě, od zálohování, ale můj velký list byl rozhodnout, nevyveze SQL z těchto stránek, Místo toho, právě udělal kopii souborů MySQL (MySQL/data) a aplikace (www/místo). Byl jsem přesvědčen, že to bude fungovat, jako jindy.

Po instalaci nové WampServer s PHP 7, záložní soubory a aplikace zpět, jen když jsem šel do testování v prohlížeči, neukázal se web, ale obrazovka Instalace WordPress jako by to byl nový web. Zamrzl! Otevřete PHPMyAdmin a zkontrolujte, zda databáze byla Ok a já viděl, že, Přestože je uvedena v databázi, Pokud jste klepli na horní tabulce zobrazíte údaje následující chybová zpráva:

  MySQL Chyba #1146 -Tabulka <TABLE_NAME> doesn ' t existují

Jsem hledal a já jsem zjistil, že můžete pouze kopírovat nebo přesunout soubory přímo do jiného adresáře MySQL MySQL, pokud jsou soubory typu MyISAM, ty s frm přípony souboru. MYD. MYI. Já nevím, co se stalo, ale moje databáze jako InnoDB (.FRM a. idb). Bohužel, až po skutečnost, že MySQL upozorněn dokumentace:

  Nemůže volně pohybovat .Soubory s příponou IBD mezi databáze adresářů v Můžete se soubory tabulek MyISAM. 
  Definice tabulky, které jsou uloženy ve sdílené InnoDB tablespace zahrnuje název databáze. 
  ID transakce a protokol pořadová čísla uložená v souborech tabulkového prostoru se také liší mezi databázemi.

Řešení

Cheguei ver algumas soluções simples, MAS vou descrever aqui única que realmente funcionou para mim, apesar de parecer bem mais complexa, encontrada no Post “Obnovení tabulky(s) v MySQL databáze soubory frm nebo ibd jsou k dispozici pouze“.

Před, Nicméně, título de conhecimento, Vale lembrar que em relação ao tipo InnoDB, MySQL střežit její strukturu souborů a dat v .frm. ibd. Dost teorie, Pojďme dostaň se k jádru věci!

Krok 1: Znovu vytvořit strukturu .frm soubory

Jak řekl, frm obsahuje struktury tabulky. Nejprve je potřeba načíst tuto strukturu k naplnění dat. To lze provést 3 různé metody popsané níže, ale předtím, než, Řeknu vám něco o “Nástroje pro MySQL”.

Nástroje pro MySQL | mysqlfrm

Je-li v úmyslu použít první metodu navrhl (Online) Takže je třeba použít nástroj “mysqlfrm” poskytované “Nástroje pro MySQL“.

Tento nástroj bude extrahovat datové struktury a generovat skript SQL vytvoření tabulky. Pro tento, Stáhnout “Nástroje pro MySQL” (něco jako mysql Utility-1.6.4-winx64.msi) a nainstalujte jej.

Otevřete konzolu (Příkaz / Z) a pomocí příkazu CD přejděte výchozí instalační adresář (něco jako C:\C:Program FilesMySQLMySQL nástroje 1.6\). Všimněte si, že v rámci tohoto adresáře je spustitelný soubor mysqlfrm.exe.

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

Vyberte pouze jednu z metod uvedených níže extrahovat strukturu tabulky obsažené v .frm soubory:

1º Metoda | Online

1. Přejděte na webové stránky HTTPS://Recovery.twindb.com/;
2. Klepněte na nabídku “Obnovení struktury” a pak v “FRM soubor z.“;
3. Klepněte na tlačítko “Prohlížeč…” a vyberte váš soubor s příponou frm; a
4. Klepněte na tlačítko “Odeslat” a na obrazovce se zobrazí skript pro vytvoření tabulky.

Je možné poslat více souborů frm jednou generování jediného skriptu se všechny tabulky. Jen proto, aby vám umožní vytvořit zip s jeho .frm před “Prohlížeč/Upload”.

2º Metoda | Použití –diagnostické

/* Obecný příklad */
   mysqlfrm Diagnostika "<zdroj/cesta>/myTable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Příklad v praxi s wp_posts.frm tabulky WordPress */
   mysqlfrm --diagnostické "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Metoda | Použití –Serveru

/* Obecný příklad */
  mysqlfrm-server=kořenový adresář:mypassword@localhost přístav=3311 "<zdroj/cesta>/myTable.frm" > "<cesta a cíl>/recovered_mytable.SQL"
 
/* Příklad v praxi s wp_posts.frm tabulky WordPress */
  mysqlfrm --Serveru=kořenový adresář@localhost --přístav=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.FRM" > "(C):\recovered_wp_posts.SQL"

Nelze použít MySQL port! Zvolte libovolné jiné dostupné. Všimněte si, že příkaz přesměruje výstup do souboru .SQL, který je uložen v zadané cestě (v případě, (C):).

Krok 2: Znovu vytvořit tabulku v databázi

V nové databázi, Vytvořte tabulku s generovaný skript v kroku 1. Osobně jsem nainstaloval čistou verzi WampServer a použít PHPMyAdmin (http://localhost/phpmyadmin /) Chcete-li vytvořit databázi a importovat SQL skript vytvořený v kroku 1 (recovered_wp_posts.SQL). Tento skript vytvoří 2 soubory v adresáři vaší databáze MySQL:

  SUA_TABELA.FRM SUA_TABELA.IDB

V mém případě, Tyto soubory byly vytvořeny ve (C):\wamp64binmysqlmysql5.7.14data<moje místo>. IE, Vyhledejte instalaci MySQL a Všimněte si, že v adresáři Datum Bude uvedené dva soubory a databáze.

Krok 3: Odebrání nového souboru IDB

Odebrání nového souboru IDB, Spusťte následující příkaz SQL:

/* Obecný příklad */
  ALTER TABLE MojeTabulka ZAHODIT tabulkový prostor;
 
/* Příklad v praxi s tabulce wp_posts WordPress */
  ALTER TABLE wp_posts ZAHODIT tabulkový prostor;

Tento příkaz odebere propojení mezi tabulkou a tabulkový prostor (Kde jsou fyzicky uloženy databázové soubory), a odstranit souboru IDB.

Krok 4: Kopie starého souboru IDB

Původního souboru IDB (obsahující data) musí být zkopírovány do místa, které dostal odstraněny v kroku IDB 3. Použít Ctrl + C a Ctrl + V, nebo zabít pomocí příkazového řádku.

Krok 5: Aktivovat v tabulce

Přerušený odkaz v kroku 3 je třeba obnovit následujícím příkazem:

/* Obecný příklad */
  ALTER TABLE MojeTabulka IMPORT tabulkový prostor;
 
/* Příklad v praxi s tabulce wp_posts WordPress */
  ALTER TABLE wp_posts IMPORT tabulkový prostor;

Nedělejte si starosti, pokud se zobrazí nějaké varování, Nicméně, Může to být obecné poruchy objevují následující chyba:

  #1808 - Neshoda schémat (Tabulka má formát řádků ROW_TYPE_DYNAMIC, .IBD soubor má formát řádku ROW_TYPE_COMPACT.)

V tomto případě, To se stalo kvůli jinak než mysql 5.7.14 (NOVÉ) Vytvoří výchozí tabulku porovnání s Mysql-5.6.17 (STARÉ), sem o ROW_FORMAT = kompaktní.

Tak, se você está usando MySQL video = ao mysql5.7.14, tudo que você precisa fazer é acrescentar ROW_FORMAT = kompaktní na definição de criação da tabela.

  CREATE TABLE 'wp_posts' (. . .) MOTOR=InnoDB ROW_FORMAT=Kompaktní

Outros erros

Apenas para deixar registrado, Antes de obter sucesso na extração de dados udělat .frm, tivní alguns diskový operační erros:

  # Zdroj na localhost: ... připojeno.
  # Spouštění spuštěný server na portu 3304 ... Při pokusu o zastavení se nezdařilo spuštěný server.  Id procesu = 6648.
  CHYBA: Spawn serveru operace se nezdařila.. Chyba serveru klon: Nelze komunikovat se nové instance. Id procesu = 6648.. Chcete-li diagnostikovat, Spusťte nástroj znovu a použití v --podrobnost možnost zobrazit zprávy ze serveru spuštěný a opravte případné chyby prezentovány a potom spusťte znovu nástroj.
  ÚSPĚCH: Proces s PID 6648 (podřízený proces PID 7264) byl ukončen.
Traceback (Poslední volání poslední):
  Soubor "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", čára 27, v <modul>
  Soubor "scripts\mysqlfrm.py", čára 422, v <modul>
  Soubor ".\mysql\utilities\command\read_frm.py", čára 439, v read_frm_files
  Soubor ".\mysql\utilities\command\read_frm.py", čára 166, v _spawn_server
  Soubor ".\mysql\utilities\command\serverclone.py", čára 180, v clone_server
  Soubor ".\mysql\utilities\common\tools.py", čára 273, v get_mysqld_version IOError: [Kód chyby 13] Oprávnění byla odepřena: "version_check"

V konkrétním případě WordPress, budete muset odstranit skript, který vygeneroval SQL vytvořených pod. frm, všechny položky výchozí ‘0000-00-00 00:00:00’, jinak, zachytí chybu:

  #1067 - Výchozí hodnota (výchozí) není platný pro "comment_date"

To je ono!

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 přístupů: 21446

12 Komentáře k “Obnovit MySQL tabulky, když jen ibd a. .frm soubory jsou k dispozici.

  1. Rodrigo řekl:

    Co dělat, když se zobrazí následující chybová zpráva: #1815 – Vnitřní chyba. Nelze obnovit LSNs v tabulce “moje místo”.”Tabulka”: Poškození struktury dat.
    Lze spustit vložení dat ručně? Jak na to?
    Od již Děkuji.

  2. Cristian U řekl:

    Ahoj Taylor,

    Jak jste vyřešit tuto chybu:
    CHYBA: Spawn serveru operace se nezdařila.. Chyba serveru klon: Nelze komunikovat s novou instanci. Id procesu = 6648.. Chcete-li diagnostikovat, Spusťte nástroj znovu a použít –podrobnost možnost zobrazit zprávy ze serveru spuštěný a opravte případné chyby prezentovány a potom spusťte znovu nástroj.
    ÚSPĚCH: Proces s PID 6648 (podřízený proces PID 7264) byl ukončen.

    Neustále dostávám stejnou zprávu a já nevím jak to vyřešit.

    Dík

  3. Reginaldo Luiz de Freitas řekl:

    Gratulujeme Taylor, ale didaktické nemožné!! Ty jsi ten samý!

    objetí a díky za sdílení vašich zkušeností!

Zanech odpověď

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *