Recover tavolina MySQL kur vetëm .frm dhe fotografi .ibd janë në dispozicion

Si për të zgjidhur “MySQL Error #1146 - Tabela nuk ekziston” shkaktuar duke lëvizur fotografi .idb (InnoDB) direkt në mes të drejtorive (tablespace).

logo_mysql

problem

Shumë nga problemet që kemi probleme të krijojnë. I sapo kishte përgatitur një faqe interneti duke përdorur WordPress dhe mendim: të tilla të shohim se si ajo punon në PHP 7? Ne rregull, si WampServer përdorur PHP tim 5.6, kështu që unë kam për të “i lumtur” Ideja për të përmirësuar WampServer 2.5 (Apache 2.4.9, Mysql-5.6.17, Php5.5.12) për WampServer 3.0.6 (Apache2.4.23, Mysql5.7.14, Php5.6.25 dhe Php 7.0.10).

qartë, Unë fillova duke backup, por hap i gabuar im i madh nuk është zgjedhur për të eksportuar SQL Faqes tillë, në vend të kësaj ajo, bërë vetëm një kopje e dosjeve MySQL (mysql / të dhënave) dhe aplikimi (www / faqe). Unë kam qenë i bindur se do të punojë, si më parë.

Pas instalimit të WampServer ri me PHP 7, I vënë fotografi MySQL backup dhe aplikimin atje mbrapa, vetëm kur kam testuar shfletuesin, Nuk u shfaq Faqes, por ekran WordPress instalimin sikur të ishte një website të ri. pelte! PhpMyAdmin e hapur për të parë nëse baza e të dhënave ishte Ok dhe pa se, pavarësisht se janë shënuar bazës së të dhënave, kur unë klikuar në tavolinë për të parë të dhënat e shfaq mesazh gabimi:

  MySQL gabim #1146 - Tabela <table_name> nuk ekziston

Unë kam qenë në kërkim dhe kam zbuluar se vetëm ju mund të kopjoni apo veprim fotografi MySQL direkt në një tjetër directory MySQL nëse dosjet janë tipit MyISAM, ata me zgjerimin .frm .MYD .MYI. Unë vërtetë nuk e di se çfarë ka ndodhur, por database im u shfaq si InnoDB (.FRM e .idb). për fat të keq, vetëm pasi ngjarja pa dokumentacionin MySQL paralajmëruar tashmë:

  Ju nuk mund të lëvizin lirshëm .Fotografi IBD mes directories bazës së të dhënave si ju mund të me fotografi tryezë MyISAM. 
  Përkufizimi Tabela e ruajtur në tablespace InnoDB përbashkët përfshin emrin bazës së të dhënave. 
  Të ID e transaksionit dhe log Numrat rend të ruajtura në dosjet tablespace gjithashtu ndryshojnë në mes të bazave të të dhënave.

zgjidhje

Kam marrë për të parë disa zgjidhje të thjeshta, por unë do të përshkruaj këtu atë që me të vërtetë ka punuar për mua, edhe pse duket më komplekse, Posto nuk u gjet “Rivendosja Tabela(s) në bazën e të dhënave MySQL kur FRM ose IBD fotografi janë në dispozicion vetëm“.

para, megjithatë, me anë të diturisë, ia vlen të kujtohet se në krahasim me InnoDB, MySQL mban strukturën e tij në dosjet .frm dhe të dhënave në .ibd. teoria e mjaftueshme, lejon të merrni poshtë për të!

hap 1: Rikrijuar strukturën e .frm

siç thashë, .frm përmban strukturën e tryezën tuaj. Së pari ne kemi nevojë për të rimarrë atë strukturë dhe pastaj, pas të dhënave të njohura. Ju mund ta bëjë këtë 3 metoda të ndryshme të përshkruara më poshtë, më shumë para, më lejoni t'ju them diçka në lidhje me “MySQL Utilities”.

MySQL Utilities | mysqlfrm

Nëse ju nuk kam ndërmend të përdorin metodën e propozuar 1 (online) atëherë ju duhet të përdorni mjet “mysqlfrm” siguruar nga “MySQL Utilities“.

Ky mjet do të nxjerr strukturën e të dhënave dhe të gjenerojë SQL krijimin tryezë script. për këtë, download “MySQL Utilities” (diçka si mysql-shërbimeve-1.6.4-winx64.msi) dhe për të instaluar-o.

Të hapur konsol (komandë / E) dhe të përdorni komandën CD për të lëvizur dosjen e instalimit parazgjedhur (diçka si C:\Program Files MySQL MySQL Utilities 1.6\). Vini re se brenda kësaj directory është i ekzekutueshëm mysqlfrm.exe.

  CD "C:\Program Files  MySQL  MySQL Utilities 1.6"

Zgjidhni vetëm një nga metodat më poshtë për nxjerrjen e strukturës së një tabelë që përmban .frm:

1Metoda ° | online

1. Vizito faqen e internetit https://recovery.twindb.com/;
2. Klikë asnjë menu “Recover Struktura” dhe më pas në “nga dosja .frm“;
3. Klikoni butonin “Browser…” dhe zgjidhni dosjen tuaj .frm; e
4. Klikoni butonin “Ngarkoni” dhe krijimi tabela script shfaqet në ekran.

Ju mund të dërgoni fotografi të shumta në të njëjtën kohë .frm krijimin e një script të vetme me të gjitha tabelat. Vetëm ju e krijoni një zip me të gjitha .frm e saj para “Browser / Ngarko”.

2Metoda ° | përdorim –diagnostikues

/* shembulli generic */
   mysqlfrm -diagnostic "<Burimi / path>/mytable.frm" > "<destinacion / path / recovered_mytable.sql>"
 
/* Shembull në praktikë me tryezë WordPress wp_posts.frm */
   mysqlfrm --diagnostikues "C:\wamp  bin  mysql  mysql5.6.17  dhëna  meubanco  wp_posts.frm" > "C:\recovered_wp_posts.sql"

3Metoda ° | përdorim –server

/* shembulli generic */
  mysqlfrm -server=rrënjë:mypassword@localhost -port=3311 "<Burimi / path>/mytable.frm" > "<destinacion / path>/recovered_mytable.sql"
 
/* Shembull në praktikë me tryezë WordPress wp_posts.frm */
  mysqlfrm --server=rrënjë@localhost --port=3307 ""C:\wamp  bin mysql\mysqld.6.17\të dhënat  meubanco  wp_posts.FRM" > "C:\recovered_wp_posts.sql"

Mos përdorni portin MySQL! Zgjidhni ndonjë tjetër në dispozicion. Vini re se komanda përcjellëse e prodhimit në një skedar .sql që është e ruajtur në rrugën e specifikuar (asnjë rast, C:).

hap 2: Krijosh tavolinë në bazën e të dhënave tuaj

Në një bazë të dhënash të re, të krijuar një tabelë me shkrimin gjeneruar në Hapin 1. Unë personalisht instaluar një version të pastër të WampServer dhe përdorur phpMyAdmin (http://localhost / phpmyadmin /) për të krijuar bazën e të dhënave dhe të importit script SQL krijuar në hapin 1 (recovered_wp_posts.sql). Ky script do të krijojë 2 fotografi në dosjen e të dhënave tuaja MySQL:

  SUA_TABELA.FRM
  SUA_TABELA.IDB

Në rastin tim, këto fotografi janë krijuar në C:\wamp64 bin mysql mysql5.7.14 dhënave <MYDATABASE.GDB>. me fjalë të tjera, kërko instalimin tuaj MySQL dhe theksohet se drejtori të dhëna ka një bazë të dhënash dhe dy fotografi të quajtur.

hap 3: Hiq skedar të ri .idb

Për të hequr skedarin e ri .idb, drejtuar komandën e mëposhtme SQL:

/* shembulli generic */
  ALTER TABLE mytable HIQ TABLESPACE;
 
/* Shembull në praktikë me tryezë WordPress wp_posts */
  ALTER wp_posts TABELA hidhni TABLESPACE;

Este comando hequr o Lidhje Entre a tabela e o tablespace (Ku ata janë ruajtur fizikisht fotografi bazës së të dhënave), dhe për të hequr fotografi .idb.

hap 4: Kopjoni skedarin e vjetër .idb

.idb Origjinale fotografi (i cili përmban të dhëna) ka nevojë që të kopjohet në vendin e .idb u fshi në Hapin 3. Përdorni Ctrl + C dhe Ctrl + V ose edhe vrasin command line.

hap 5: Riaktivizuar tabelën

Lidhje thyer në Hapin 3 Ju duhet të rivendoset me komandën e mëposhtme:

/* shembulli generic */
  ALTER TABLE mytable IMPORT TABLESPACE;
 
/* Shembull në praktikë me tryezë WordPress wp_posts */
  ALTER TABLE wp_posts Import TABLESPACE;

Mos u shqetësoni nëse ju merrni disa paralajmërime, megjithatë, mund të jetë për të dhënë ndarje të përgjithshme që tregon gabim në vijim:

  #1808 - Skema mospërputhje (Tabela ka formatin ROW_TYPE_DYNAMIC rresht, .IBD fotografi ka format ROW_TYPE_COMPACT rresht.)

në këtë rast, kjo ka ndodhur për shkak të mënyrë të ndryshme se mysql5.7.14 (NEW) krijon tabelën e paracaktuar në lidhje me MySQL-06/05/17 (Antik), sem o ROW_FORMAT = compact.

pastaj, nëse jeni duke përdorur MySQL> = e mysql5.7.14, të gjithë ju duhet të bëni është të shtoni ROW_FORMAT = kompakt në krijimin përkufizimin tryezë.

  CREATE TABLE `wp_posts` (. . .) ENGINE=InnoDB ROW_FORMAT=kompakt

gabime të tjera

Vetëm për rekord, para se të pasuar në .frm nxjerrjen e të dhënave, Kam pasur disa gabime:

  # Burimi në localhost: ... i lidhur.
  # Duke filluar serverin pjellë në port 3304 ... ERROR Përpjekje për të ndaluar dështuar server pjellë.  Procesi id = 6648.
  ERROR: Operacioni server Spawn dështuar. Gabim Clone server: Në pamundësi për të komunikuar me i ri shembull. procesi id = 6648.. për të diagnostikuar, drejtuar shërbimeve përsëri dhe përdorim the --opsion llafazanëri për të parë mesazhet nga serveri pjellë dhe korrigjuar ndonjë gabim paraqitura pastaj të drejtuar shërbimeve përsëri.
  SUKSES: Procesi me PID 6648 (Procesi fëmijë i PID 7264) është ndërprerë.
gjurmim (thirrja më e fundit e fundit):
  skedar "G:\ade  ndërtuar  sb_0-19921351-1470074463.97  Python-2.7.6-windows-x86-64bit  lib  faqe-paketa  cx_Freeze  initscripts  Console.py", linjë 27,<modul>
  skedar "scripts\mysqlfrm.py", linjë 422,<modul>
  skedar ".\mysql\utilities\command\read_frm.py", linjë 439, në read_frm_files
  skedar ".\mysql\utilities\command\read_frm.py", linjë 166, në _spawn_server
  skedar ".\mysql\utilities\command\serverclone.py", linjë 180, në clone_server
  skedar ".\mysql\utilities\common\tools.py", linjë 273, në get_mysqld_version
IOError: [Errno 13] leja mohoi: 'Version_check'

Në rastin specifik të WordPress, ju keni nevojë për të hequr skenar që gjeneruar SQL marrë në .frm, gjitha shënimet si 'DEFAULT ‘0000-00-00 00:00:00', ndryshe, do të kapur gabimin:

  #1067 - vlera e parazgjedhur (parazgjedhur) pavlefshme për 'comment_date'

që!

burime

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

gjithsej accesses: 14898

10 komente “Recover tavolina MySQL kur vetëm .frm dhe fotografi .ibd janë në dispozicion

  1. Rodrigo tha:

    Çfarë duhet të bëni kur ju shihni mesazhin e mëposhtëm gabimi: #1815 – Gabim i brendshëm. Nuk mund të rivendosur LSNs në tryezë “MYDATABASE.GDB”.”minhatabela”: Struktura e të dhënave korrupsionit.
    A është e mundur për të kryer të dhënat me dorë Inserts? Si të bëhet kjo?
    Ju falënderoj.

  2. Cristian U tha:

    Hi Taylor,

    Si e keni zgjidhur këtë gabim:
    ERROR: Operacioni server Spawn dështuar. Gabim Clone server: Në pamundësi për të komunikuar me shembull të ri. Procesi id = 6648.. për të diagnostikuar, të drejtuar shërbimeve përsëri dhe të përdorni –opsion llafazanëri për të parë mesazhet nga serveri pjellë dhe korrigjuar ndonjë gabim paraqitura pastaj të drejtuar shërbimeve përsëri.
    SUKSES: Procesi me PID 6648 (Procesi fëmijë i PID 7264) është ndërprerë.

    Unë mbaj marrjen të njëjtin mesazh dhe unë dont di se si për të zgjidhur atë.

    Faleminderit

Lini një Përgjigju

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *