Зөвхөн .frm болон .ibd файлууд боломжтой байдаг бол MySQL хүснэгтүүдийг сэргээнэ

шийдвэрлэх вэ “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 и Флп 7.0.10).

тодорхой, Би нөөцлөх аас эхэлсэн, харин миний том буруу алхам бол SQL зэрэг Сайтыг экспортлох байх нь сонгох байсан, Харин оронд нь, зүгээр л MySQL файлуудын хуулбарыг хийсэн (MySQL / мэдээлэл) , програм (WWW / сайт). Би Хэрэв энэ нь ажиллахгүй гэсэн итгэлтэй байсан, өмнө.

PHP шинэ WampServer суулгасны дараа 7, Би буцаж байгаа MySQL нөөц файлууд болон програм тавих, Зөвхөн үед би хөтчийг туршиж байна, үзэгдэв үгүй ​​биш Сайтын, Харин WordPress суулгах дэлгэц энэ нь шинэ вэб сайт нь байсан мэт. вазелин! өгөгдлийн сан Ok байсан бөгөөд харсан уу Нээлттэй PHPMyAdmin харах гэж, мэдээллийн санг жагсаасан байгаа хэдий ч, мэдээллийг үзэхийн тулд ширээн дээр дарсан дараах алдааны мэдэгдэл гарч:

  MySQL алдаа #1146 - Хүснэгт <table_name> байхгүй байна

Би хайж мөн байна би та зөвхөн хуулах эсвэл файлууд төрөл MyISAM байгаа бол өөр MySQL нь MySQL сан руу шууд файлуудыг хөдөлгөж болно гэдгийг олж мэдсэн, Өргөтгөл .frm .MYD .MYI хүмүүс. Би үнэхээр юу болсныг мэдэхгүй байна, харин миний мэдээллийн сан InnoDB шиг харагдсан (.FRM и .idb). харамсалтай нь, үйл явдал MySQL баримт бичгийг хараад дараа л аль хэдийн анхааруулсан:

  Та чөлөөтэй хөдөлж чадахгүй .өгөгдлийн сан сангуудын хооронд ibd файлууд зэрэг you can with MyISAM table files. 
  The table definition stored in the InnoDB shared tablespace includes the database name. 
  The transaction IDs and нэвтрэн орох sequence numbers stored in the tablespace files also differ between databases.

шийдэл

Cheguei a ver algumas soluções simples, mas vou descrever aqui a única que realmente funcionou para mim, apesar de parecer bem mais complexa, encontrada no PostRestoring table(ийн) in MySQL database when frm or ibd files are available only“.

Antes, Гэсэн хэдий ч, a título de conhecimento, vale lembrar que em relação ao tipo InnoDB, MySQL .ibd онд .frm файлууд болон мэдээллийн түүний бүтцийг хадгалж байдаг. хангалттай онол, доош авах боломжийг олгодог!

алхам 1: .frm бүтцийг дахин бий болгох

Би хэлсэн, .frm ширээн бүтцийг агуулсан. Эхлээд бид алдартай мэдээллийн дараа тэр бүтэц, дараа нь сэргээх хэрэгтэй. Та үүнийг хийж чадна 3 Янз бүрийн арга доор тайлбарласан, харин өмнө, би чамд тухай ямар нэг юм хэлье “MySQL Utilities”.

MySQL Utilities | mysqlfrm

Та санал болгож аргыг хэрэглэх гэж байгаа юм бол 1 (Онлайн) Дараа нь та нар хэрэгслийг ашиглах хэрэгтэй “mysqlfrm” заасан “MySQL Utilities“.

Энэ хэрэгсэл нь өгөгдлийн бүтцийг задалж, ширээний бий болгох SQL скрипт бий болно. энэ нь, татаж авах “MySQL Utilities” (algo COMO MySQL-хэрэгслүүд-1.6.4-winx64.msi) болон суулгах.

консол нээх (тушаал / ТУХАЙ) анхдагч суулгах санг шилжих CD тушаалыг ашиглана (С гэх мэт ямар нэг зүйл:\Program Files\MySQL\MySQL Utilities 1.6\). гэсэн сан дотор тэр нь гүйцэтгэгдэнэ юм анхаарна уу mysqlfrm.exe.

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

.frm агуулагдах ширээн бүтцийг задалж тулд доорх аргыг зөвхөн нэгийг нь сонгох хэрэгтэй:

1арга-р | Онлайн

1. вэб хуудас руу орж авна уу HTTPS://recovery.twindb.com/;
2. цэс дээр дарна уу “бүтэц сэргээнэ” дараа нь “.frm файлаас“;
3. товчин дээр дарна “Browser…” болон таны .frm файлыг сонгоно уу; и
4. товчин дээр дарна “Оруулж” болон хүснэгт үүсгэх скрипт дэлгэц дээр гарч ирэх.

Та нэг удаа бүх хүснэгтүүд нь нэг скрипт бий болгоход олон .frm илгээж болно. Зүгээр л та түүний бүх .frm өмнө нь .zip бий зөвшөөрөх “Хөтөч / оруулах”.

2арга-р | ашиглах –оношлогооны

/* Жишээ нь ерөнхий */
   mysqlfrm -diagnostic "<эх сурвалж / зам>/mytable.frm" > "<очих газар / зам / recovered_mytable.sql>"
 
/* WordPress хүснэгт wp_posts.frm хамт Жишээ дасгал */
   mysqlfrm --оношлогооны "C:\wamp\bin\mysql\mysql5.6.17\data\meubanco\wp_posts.frm" > "C:\Recovered_wp_posts.sql"

3арга-р | ашиглах –сервер

/* Жишээ нь ерөнхий */
  mysqlfrm -server=эх:MyPassword@тестлээрэй порт=3311 "<эх сурвалж / зам>/mytable.frm" > "<очих газар / зам>/recovered_mytable.sql"
 
/* WordPress хүснэгт wp_posts.frm хамт Жишээ дасгал */
  mysqlfrm --сервер=эх@тестлээрэй --порт=3307 ""C:\wamp\bin\MySQL\mysql5.6.17\data\meubanco\wp_posts.FRM" > "C:\recovered_wp_posts.SQL"

MySQL портыг ашиглаж болохгүй! бусад боломжтой сонгоно уу. тушаал нь заасан зам нь хадгалсан байдаг бөгөөд энэ нь .sql файлд гаралтыг чиглүүлэгч гэдгийг анхаарна уу (ямар ч тохиолдолд, C:).

алхам 2: Таны санд хүснэгтийг дахин бий болгох

шинэ мэдээллийн санд, Алхам үүсгэгдэх скрипт нь хүснэгтийг үүсгэх 1. Eu particularmente instalei uma versão limpa do WampServer e utilizei o PHPMyAdmin (HTTP://localhost/phpmyadmin/) para criar a base de dados e importar o script SQL criado no passo 1 (recovered_wp_posts.sql). Este script irá criar 2 arquivos no diretório da sua base de dados MySQL:

  SUA_TABELA.frm
  SUA_TABELA.idb

Миний хувьд, esses arquivos foram criados em C:\wamp64\bin\mysql\mysql5.7.14\data\<MYDATABASE.GDB>. Өөрөөр хэлбэл, procure sua instalação do MySQL e note que no diretório мэдээ haverá sua base de dados e os dois arquivos citados.

алхам 3: Remova o novo arquivo .idb

Para remover o novo arquivo .idb, execute o seguinte comando SQL:

/* Жишээ нь ерөнхий */
  ALTER TABLE mytable DISCARD TABLESPACE;
 
/* Exemplo na prática com a tabela wp_posts do WordPress */
  ALTER TABLE wp_posts DISCARD TABLESPACE;

Este comando remove o link entre a tabela e o tablespace (Тэд бие бялдрын хувьд мэдээллийн баазын файлыг хадгалж байгаа бол), болон файлыг устгах .idb.

алхам 4: Хуучин .idb файлыг хуулах

эх файл .idb (нь өгөгдлийг агуулсан) Та Алхам дахь устгагдсан байна .idb газарт хуулах хэрэгтэй 3. Ctrl + C болон Ctrl + V эсвэл бүр тушаалын мөрийг алах ашиглах.

алхам 5: хүснэгтийг дахин идэвхжүүлэх

Алхам эвдэрсэн холбоос 3 Та дараах тушаалаар сэргээх хэрэгтэй:

/* Жишээ нь ерөнхий */
  Уолтер ХҮСНЭГТ mytable ИМПОРТ TABLESPACE;
 
/* Exemplo na prática com a tabela wp_posts do WordPress */
  Хүснэгт wp_posts ИМПОРТ TABLESPACE өөрчлөх;

Хэрэв та ямар нэг анхааруулга авах уу бүү санаа зов, Гэсэн хэдий ч, дараах алдаа байгаа ерөнхий эвдрэлийг өгөх болно:

  #1808 - схем тохирохгүй (Хүснэгт ROW_TYPE_DYNAMIC мөр форматыг байна, .ibd файл ROW_TYPE_COMPACT эгнээ форматыг байна.)

энэ тохиолдолд, Хэрэв энэ нь mysql5.7.14 өөр замаар тохиолдсон (ШИНЭ) MySQL-6.5.17 холбоотойгоор анхдагч хүснэгтийг үүсгэдэг (ХУУЧИН), sem o ROW_FORMAT=compact.

дараа нь, se você está usando MySQL >= ao mysql5.7.14, tudo que você precisa fazer é acrescentar ROW_FORMAT=compact na definição de criação da tabela.

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

Outros erros

Apenas para deixar registrado, antes de obter sucesso na extração de dados do .frm, tive alguns erros:

  # Source on localhost: ... connected.
  # Starting the spawned server on port 3304 ... ERROR Attempting to stop failed spawned server.  Үйл явц ID = 6648.
  ERROR: Салаалуулан үүсгэж сервер үйл ажиллагаа амжилтгүй болсон. Clone сервер алдаа: Unable to communicate with шинэ instance. Process id = 6648.. оношлох, run the utility again and use the --verbosity option to view the messages from the spawned server and correct any errors presented then run the utility again.
  SUCCESS: The process with PID 6648 (child process of PID 7264) has been terminated.
Traceback (хамгийн сүүлийн дуудлага өнгөрсөн):
  Файлын "G:\ade\build\sb_0-19921351-1470074463.97\Python-2.7.6-windows-x86-64bit\lib\site-packages\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\commonools.py", шугам 273, get_mysqld_version нь
IOError: [Errno 13] Permission татгалзсан: "Version_check"

No caso específico do WordPress, você precisa remover do script que gerou o SQL obtidos em .frm, todas as entradas ‘DEFAULT ‘0000-00-00 00:00:00", caso contrário, vai pegar o erro:

  #1067 - Valor padrão (анхдагч) inválido para '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

Нийт хандахыг: 21390

12 сэтгэгдэл “Зөвхөн .frm болон .ibd файлууд боломжтой байдаг бол MySQL хүснэгтүүдийг сэргээнэ

  1. Родриго гэж хэлсэн:

    Та дараах алдааны мэдэгдлийг харах үед юу хийх вэ: #1815 – Дотоод алдаа. хүснэгтэд LSNs анхны байдалд нь оруулж чадахгүй байна “MYDATABASE.GDB”.”minhatabela”: Өгөгдлийн бүтэц авлига.
    боломжтой өгөгдлийг гараар оруулдаг гүйцэтгэх явдал юм? Como fazer isso?
    Desde já te agradeço.

  2. Кристиан U гэж хэлсэн:

    Сайн байна уу Тейлор,

    Хэрэв та энэ алдааг шийдэж бэ:
    ERROR: Салаалуулан үүсгэж сервер үйл ажиллагаа амжилтгүй болсон. Clone сервер алдаа: Шинэ Жишээ харилцах боломжгүй. Үйл явц ID = 6648.. оношлох, дахин хэрэгслийг ажиллуулах, ашиглах –verbosity option to view the messages from the spawned server and correct any errors presented then run the utility again.
    SUCCESS: The process with PID 6648 (child process of PID 7264) has been terminated.

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

    Thanks

  3. Reginaldo Luiz de Freitas гэж хэлсэн:

    Парабен Тейлор, Харин Сургаалт боломжгүй!! Та нар нэг залуу байдаг!

    тэврэх, таны туршлага хуваалцах баярлалаа!

хариу үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *