Վերականգնել MySQL սեղաններ, երբ միայն .frm եւ .ibd ֆայլերը հասանելի են

Ինչպես լուծել “MySQL Սխալ #1146 - Աղյուսակ գոյություն չունի” պայմանավորված է շարժվում ֆայլեր .idb (InnoDB) ուղղակիորեն միջեւ տեղեկագրքեր (tablespace).

logo_mysql

խնդիր

Շատերը խնդիրների մենք կան խնդիրներ, մենք ստեղծում. Ես պարզապես պատրաստել մի կայք, օգտագործելով WordPress եւ միտք: օրինակ, տեսնել, թե ինչպես է այն աշխատում է PHP 7? Լավ, քանի որ իմ WampServer օգտագործվում PHP 5.6, այնպես որ ես ստիպված էի “երջանիկ” գաղափարը բարձրացնել WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, Php5.5.12) համար WampServer 3.0.6 (Apache2.4.23, Mysql5.7.14, Php5.6.25 եւ Php 7.0.10).

պարզ, Ես սկսել են կրկնօրինակում, բայց իմ մեծ սայթաքել էր ընտրում է ոչ թե արտահանել SQL նման Site, փոխարենը, այն, պարզապես արել պատճենը MySQL ֆայլերի (MySQL / տվյալները) եւ կիրառումը (www / Կայքի). Ես վստահ էի, որ դա է աշխատել, ինչպես եւ նախկինում.

Հետո տեղադրելու նոր WampServer հետ PHP 7, Ես դրել MySQL կրկնօրինակում ֆայլերը եւ դիմումը այնտեղ վերադառնալ, միայն այն ժամանակ, երբ ես փորձարկել բրաուզերը, չի հայտնվել Site, բայց WordPress տեղադրումը էկրանի, քանի որ, եթե դա եղել է մի նոր կայքը. ժելե! Բաց phpMyAdmin է տեսնել, եթե տվյալների բազան էր, OK, եւ տեսա, որ, չնայած նշված տվյալների բազայի, երբ ես կտտացրել է սեղանի վրա դիտելու տվյալները հայտնվել են հետեւյալ error message:

  MySQL սխալ #1146 - Սեղանի <table_name> գոյություն չունի

Ես եղել եմ փնտրում, եւ ես հայտնաբերեցի, որ դուք կարող եք միայն պատճենել կամ տեղափոխել MySQL ֆայլերը ուղղակիորեն այլ MySQL գրացուցակում, եթե ֆայլերը են տիպը MyISAM, նրանց հետ, EXTENSION .frm .MYD .MYI. Ես չեմ իմանում, թե ինչ է տեղի ունեցել, բայց իմ տվյալների բազայի հայտնվել, քանի որ InnoDB (.FRM ե .idb). ցավոք,, միայն այն բանից հետո, երբ այդ իրադարձությունը տեսավ, MySQL փաստաթղթերը արդեն զգուշացրել:

  Դուք չեք կարող ազատորեն տեղաշարժվել .IBD ֆայլեր միջեւ բազայի տեղեկագրքեր ինչպես Դուք կարող եք MyISAM սեղան ֆայլերի. 
  Աղյուսակը սահմանումը պահվում է InnoDB ընդհանուր tablespace ներառում է տվյալների բազայի անունը. 
  Գործարքի վկայականներն ու մուտք գործել հաջորդականությունը համարները պահվում է tablespace ֆայլերը նաեւ տարբերվում բազաների.

լուծում

Ես ստացել եմ տեսնել մի քանի պարզ լուծումներ, բայց ես նկարագրել այստեղ մեկը, որ, իրոք, աշխատում ինձ համար, թեեւ թվում է, որ ավելի բարդ, Հաղորդագրություններ փակցնելու չի գտնվել “Վերականգնել սեղան(S) MySQL տվյալների բազայի, երբ frm կամ IBD ֆայլեր հասանելի են միայն“.

մինչեւ, սակայն, ի դեպ, գիտելիքների, հարկ է հիշել, որ համեմատած InnoDB, MySQL պահում է իր կառուցվածքը .frm ֆայլերը եւ տվյալների .ibd. Բավական է տեսությունը, թույլ է տալիս ստանալ ներքեւ!

քայլ 1: Վերստեղծել կառուցվածքը .frm

ինչպես ասացի, որ .frm պարունակում կառուցվածքը ձեր սեղանին. Առաջին, մենք պետք է վերականգնել կառուցվածքը եւ դրանից հետո հայտնի տվյալները. Դուք կարող եք դա անել 3 Տարբեր մեթոդներ ստորեւ նկարագրված, ավելի առաջ, թույլ տվեք պատմել ձեզ մի բան մասին “MySQL Կոմունալ”.

MySQL Կոմունալ | mysqlfrm

Եթե ​​դուք չեք պատրաստվում են օգտագործել առաջարկվող մեթոդը 1 (առցանց) ապա դուք պետք է օգտագործել այդ գործիքը “mysqlfrm” կողմից տրամադրված “MySQL Կոմունալ“.

Այս գործիքը պիտի հանենք տվյալների կառուցվածքը եւ առաջացնում SQL սցենար սեղան ստեղծումը. սրա համար, բեռնել “MySQL Կոմունալ” (նման բան է MySQL-կոմունալ-1.6.4-winx64.msi) եւ տեղադրել-o.

Բացեք կոնսոլից (Հրաման / OF) եւ օգտագործել CD հրաման տեղափոխել լռելյայն տեղադրման տեղեկատու (նման բան է C:\Program Files MySQL MySQL Կոմունալ ծառայություններ 1.6\). Նշենք նաեւ, որ այդ տեղեկատու գործարկվող mysqlfrm.exe.

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

Ընտրել միայն մեկը մեթոդների ստորեւ հանել կառուցվածքը մի սեղանի պարունակվող .frm:

1° մեթոդ | առցանց

1. Մուտք գործել կայքը HTTPS://recovery.twindb.com/;
2. Կլիկ ոչ մենյուն “վերականգնել կառուցվածքը” եւ ապա “ից .frm ֆայլը“;
3. Սեղմեք կոճակը “Բրաուզերը…” եւ ընտրեք ձեր .frm ֆայլը; ե
4. Սեղմեք կոճակը “վերբեռնում” եւ սեղանի ստեղծումը script հայտնվում էկրանի վրա.

Դուք կարող եք ուղարկել բազմաթիվ .frm ֆայլերի միանգամից ստեղծել միասնական սցենար բոլոր սեղանների. Պարզապես պետք է ստեղծել մի .Zip իր բոլոր .frm առջեւ “Browser / Վերբեռնել”.

2° մեթոդ | օգտագործելով –ախտանիշ

/* օրինակ, ընդհանուր */
   mysqlfrm -diagnostic "<աղբյուրը / ուղին>/mytable.frm" > "<նպատակակետը / ուղին / recovered_mytable.sql>"
 
/* Օրինակ, գործնականում է WordPress wp_posts.frm սեղանի */
   mysqlfrm --ախտանիշ "C:\WAMP  bin  MySQL  mysql5.6.17  տվյալները  meubanco  wp_posts.frm" > "C:\Recovered_wp_posts.sql"

3° մեթոդ | օգտագործելով –սերվերի

/* օրինակ, ընդհանուր */
  mysqlfrm -server=արմատ:mypassword@localhost -port=3311 "<աղբյուրը / ուղին>/mytable.frm" > "<նպատակակետը / ուղին>/recovered_mytable.sql"
 
/* Օրինակ, գործնականում է WordPress wp_posts.frm սեղանի */
  mysqlfrm --սերվերի=արմատ@localhost --նավահանգիստ=3307 ""C:\WAMP  bin MySQL\mysqld.6.17\data\meubanco\wp_posts.FRM" > "C:\recovered_wp_posts.SQL"

Մի օգտագործեք MySQL նավահանգիստ! Ընտրեք որեւէ այլ մատչելի. Նշենք, որ հրամանը վերահղում արտադրանքի մի .SQL ֆայլ, որը պահպանվում է նշված ճանապարհին (ոչ մի դեպքում, C:).

քայլ 2: Վերստեղծել աղյուսակը ձեր տվյալների բազայում

Մի նոր տվյալների բազա, ստեղծել մի սեղան սցենարի առաջացած քայլ 1. Ես անձամբ տեղադրել մաքուր տարբերակը WampServer եւ օգտագործվում է phpMyAdmin (http://localhost / phpMyAdmin /) Ինչպես ստեղծել տվյալների բազան, եւ ներմուծման SQL սցենար ստեղծված քայլ 1 (recovered_wp_posts.sql). Այս սցենարը կստեղծի 2 ֆայլերը դիրեկտորիայի Ձեր MySQL տվյալների բազայի:

  SUA_TABELA.FRM
  SUA_TABELA.Զարգացման

Իմ դեպքում, Այդ ֆայլերը ստեղծվել են C:\wamp64 bin MySQL mysql5.7.14 տվյալները <MYDATABASE.GDB>. այլ կերպ ասած, որոնել ձեր MySQL տեղադրումը եւ նշել, որ այդ ցուցակում տվյալներ կա բազան եւ երկու ֆայլերը անունով.

քայլ 3: Հեռացնել նոր .idb ֆայլը

To հեռացնել նոր .idb ֆայլը, գործարկել է հետեւյալ SQL հրամանը:

/* օրինակ, ընդհանուր */
  ALTER TABLE mytable ՉԵՂԱՐԿԵԼ tablespace;
 
/* Օրինակ, գործնականում է WordPress wp_posts սեղանի */
  Փոխել սեղան wp_posts դեն tablespace;

Este հրահանգը հեռացնել տ հղումը Entre մի Tabela ե տ tablespace (Որտեղ նրանք կարող են ֆիզիկապես պահվում են տվյալների բազայի ֆայլեր), եւ հեռացնել ֆայլը .idb.

քայլ 4: Պատճենահանել հին .idb ֆայլը

Բնօրինակը ֆայլը .idb (որը պարունակում է տվյալներ) հարկավոր է գնի պատճենահանվել տեղը .idb ջնջվել քայլ 3. Օգտագործեք Ctrl + C եւ Ctrl + V կամ նույնիսկ սպանել հրամանի տող.

քայլ 5: Ակտիվացնել աղյուսակը

Կոտրված հղում Քայլ 3 Դուք պետք է վերականգնել հետեւյալ հրամանատարության:

/* օրինակ, ընդհանուր */
  ALTER TABLE mytable ՆԵՐՄՈՒԾՈՒՄ tablespace;
 
/* Օրինակ, գործնականում է WordPress wp_posts սեղանի */
  Փոխել սեղան wp_posts IMPORT tablespace;

Մի անհանգստացեք, եթե դուք ստանում եք որոշ զգուշացումներ, սակայն, կարող է տալ ընդհանուր նկատում, որը ցույց է հետեւյալ սխալը:

  #1808 - Schema անհամապատասխանություն (Աղյուսակ ունի ROW_TYPE_DYNAMIC տող ձեւաչափը, .IBD ֆայլի ROW_TYPE_COMPACT տող ձեւաչափը:)

այս դեպքում, դա տեղի է ունեցել այն պատճառով, որ տարբեր այնպես, որ mysql5.7.14 (ՆՈՐ) ստեղծում է կանխադրված աղյուսակը առնչությամբ դեպի MySQL-06/05/17 (ANTIQUE), sem O ROW_FORMAT = կոմպակտ.

ապա, եթե դուք օգտագործում եք MySQL> = The mysql5.7.14, բոլոր դուք պետք է անեք է ավելացնել ROW_FORMAT = կոմպակտ սեղանի ստեղծման սահմանման.

  ՍՏԵՂԾԵԼ ԱՂՅՈՒՍԱԿ `wp_posts` (. . .) ENGINE=InnoDB ROW_FORMAT=սեղմ

այլ սխալներ

Պարզապես համար ռեկորդային, մինչեւ հաջողությամբ .frm տվյալների արդյունահանման, Ես ունեի մի քանի սխալներ:

  # Աղբյուր վրա localhost: ... կապված.
  # Սկսած spawned սերվերը վրա նավահանգստում 3304 ... Սխալը տեղի է դադարեցնել ձախողված spawned սերվեր.  Process id = 6648.
  ERROR: Խավիար սերվերի գործողությունը ձախողվեց. Clone սերվերի սխալ: Անհնար է շփվել նոր օրինակ. Process id = 6648.. ախտորոշել, գործարկել է կոմունալ կրկին ու օգտագործում որ --շատախոսություն տարբերակը տեսնելու համար հաղորդագրությունները spawned սերվերի եւ ուղղել որեւէ սխալներ ներկայացված, ապա վազում է կոմունալ կրկին.
  SUCCESS: Գործընթացը հետ PID 6648 (Երեխան գործընթացը PID 7264) դադարեցվել.
Traceback (ամենավերջին Զանգահարեք անցյալ):
  ֆայլ "G:\ade  կառուցել  sb_0-19921351-1470074463.97  Python-2.7.6-windows-x86-64bit  lib  site-փաթեթներ  cx_Freeze  initscripts  Console.py", գիծ 27, մեջ <մոդուլ>
  ֆայլ "scripts\mysqlfrm.py", գիծ 422, մեջ <մոդուլ>
  ֆայլ ".\mysql\utilities\command\Read_frm.py", գիծ 439, ի read_frm_files
  ֆայլ ".\mysql\utilities\command\Read_frm.py", գիծ 166, ի _spawn_server
  ֆայլ ".\mysql\utilities\command\serverclone.py", գիծ 180, ի clone_server
  ֆայլ ".\mysql\utilities\common\Tools.py", գիծ 273, ի get_mysqld_version
IOError: [Errno 13] թույլտվությունը հերքեց: 'Version_check'

Ի կոնկրետ դեպքում WordPress, Դուք պետք է հեռացնել սցենար է, որ գեներացվել է SQL ձեռք .frm, Բոլոր գրառումները, ինչպես նաեւ 'Կանխորոշված ‘0000-00-00 00:00:00', այլապես, բռնել սխալ:

  #1067 - Լռակյաց արժեքը (լռելյայն) անվավեր է 'comment_date'

որ!

աղբյուրները

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

Ընդամենը մուտքերը: 16799

10 արձագանքներ “Վերականգնել MySQL սեղաններ, երբ միայն .frm եւ .ibd ֆայլերը հասանելի են

  1. Rodrigo ասել է:

    Ինչ անել, երբ տեսնում եք հետեւյալ սխալ հաղորդագրություն: #1815 – ներքին սխալ. Հնարավոր չէ զրոյացնել LSNs են աղյուսակ “MYDATABASE.GDB”.”minhatabela”: Data կառուցվածքը կոռուպցիան.
    Արդյոք դա հնարավոր է կատարել տվյալների ձեռքով ներդիրների? Ինչպես դա անել?
    Շնորհակալ եմ Ձեզ.

  2. Kimo ասել է:

    Ես պարզապես ուզում եմ ձեզ մի մեծ F ** թագավոր Շնորհակալություն YOUUUUUUU. դու փրկեցիր իմ կյանքը պիժոն!!!!!

  3. Cristian U ասել է:

    hi Taylor,

    Ինչպես էիք լուծել այս սխալը:
    ERROR: Խավիար սերվերի գործողությունը ձախողվեց. Clone սերվերի սխալ: Անհնար է շփվել նոր օրինակ. Process id = 6648.. ախտորոշել, գործարկել է կոմունալ կրկին եւ օգտագործել –շատախոսություն տարբերակը տեսնելու համար հաղորդագրությունները spawned սերվերի եւ ուղղել որեւէ սխալներ ներկայացված, ապա վազում է կոմունալ կրկին.
    SUCCESS: Գործընթացը հետ PID 6648 (Երեխան գործընթացը PID 7264) դադարեցվել.

    I keep receiving the same message and I don´t know how to solve it.

    Thanks

Deixe uma resposta para Ժակ Ավելացնել կարծիք Չեղարկել պատասխանել

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու. Պահանջվող դաշտերը նշված են *