Pulihkan Jadual MySQL apabila hanya di .frm fail and. ibd sedia ada

Bagaimana untuk menyelesaikan “Ralat MySQL #1146 -Jadual tidak wujud” akibat mengalihkan fail .IDB (InnoDB) langsung di antara direktori (tablespace).

logo_mysql

Masalah

Banyak masalah yang kita ada akan masalah kami mencipta. Saya hanya sediakan tapak yang menggunakan WordPress dan fikir: Bagaimana pula melihat bagaimana ini kerja-kerja dalam Bahasa pengaturcaraan PHP 7? ok, seperti yang saya WampServer digunakan PHP 5.6, Jadi saya terpaksa “gembira” Idea untuk menaik taraf yang WampServer 2.5 (Apache 2.4.9, MySQL-5.6.17, PHP 5.5.12) bagi WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP dan Php 7.0.10).

mestilah, dimulakan oleh sandaran, tetapi saya slip yang besar adalah memilih tidak untuk mengeksport SQL dari laman web tersebut, Sebaliknya, hanya membuat salinan fail MySQL (MySQL/data) dan juga permohonan tersebut (www/tapak). Saya telah yakin ia akan bekerja, seperti masa yang lain.

Selepas memasang WampServer itu baru dengan PHP 7, meletakkan fail sandaran dan belakang permohonan, hanya Bilakah saya pergi untuk menguji oleh pelayar, tidak menunjukkan tapak, tetapi skrin pemasangan WordPress seolah-olah ia adalah tapak baru. Froze! Buka PHPMyAdmin dan semak untuk melihat jika pangkalan data adalah Ok dan saya melihat bahawa, Walaupun yang disenaraikan dalam pangkalan data, Bilakah anda klik pada bahagian atas jadual untuk melihat data mesej ralat berikut:

  MySQL Ralat #1146 -Jadual <TABLE_NAME> doesn ' t wujud

Saya telah mencari dan saya hanya mendapati bahawa anda boleh menyalin atau mengalih fail terus ke direktori MySQL MySQL lain jika fail jenis MyISAM, mereka yang mempunyai sambungan fail frm. MYD. MYI. Saya tidak tahu apa yang berlaku, tetapi saya pangkalan data muncul sebagai InnoDB (.FRM and. idb). Malangnya, hanya selepas fakta bahawa MySQL diberitahu dokumentasi:

  Anda tidak boleh bebas bergerak .IBD fail antara pangkalan data direktori dalam Anda boleh dengan fail-fail Jadual MyISAM. 
  Definisi Jadual disimpan dalam tablespace InnoDB yang dikongsi termasuk nama pangkalan data. 
  ID transaksi dan log masuk turutan nombor yang disimpan dalam fail tablespace juga berbeza antara pangkalan data.

Penyelesaian

Saya ada kena mengena beberapa penyelesaian yang mudah, tetapi saya akan Terangkan di sini satu-satunya yang benar-benar bekerja untuk saya, Walaupun ia seolah-olah lebih kompleks, dalam jawatan “Mengambil semula Jadual(s) dalam pangkalan data MySQL apabila frm atau ibd fail sedia ada sahaja“.

Sebelum, Walau bagaimanapun, gelaran ilmu, Ingat bahawa berhubung dengan InnoDB di taip, MySQL struktur pengawal anda dalam fail dan data dalam .frm. ibd. Teori cukup, Mari kita memotong mengejar!

Langkah 1: Mencipta semula struktur fail yang .frm

Seperti yang katakan, frm yang mengandungi struktur jadual anda. Mula-mula kita perlu untuk mendapatkan struktur ini untuk mengisi data kemudian. Anda boleh melakukan ini 3 kaedah yang berbeza yang dinyatakan di bawah, tetapi sebelum, Biar saya beritahu anda sesuatu tentang ini “Utiliti MySQL”.

Utiliti MySQL | mysqlfrm

Jika anda tidak bercadang untuk menggunakan kaedah pertama yang dicadangkan (Dalam talian) Jadi anda perlu menggunakan alat “mysqlfrm” disediakan oleh pihak “Utiliti MySQL“.

Alat ini akan cabutan struktur data dan menjana pembentukan jadual SQL skrip. Untuk ini, Muat turun “Utiliti MySQL” (sesuatu seperti mysql-utiliti-1.6.4-winx64.msi) dan pasang.

Membuka konsol (Perintah / Daripada itu) dan guna CD perintah untuk bergerak dalam lalai Pemasangan Direktori (sesuatu seperti C:\C:program FilesMySQLMySQL utiliti 1.6\). Ambil perhatian bahawa dalam direktori ini terdapat kali laksana mysqlfrm.exe.

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

Memilih hanya salah satu daripada kaedah di bawah untuk cabutan anda struktur jadual yang terkandung di dalam fail .frm:

1º Kaedah | Dalam talian

1. Pergi ke tapak web HTTPS://Recovery.twindb.com/;
2. Klik pada menu “Memulihkan struktur” dan kemudian di “FRM fail dari.“;
3. Klik pada butang “Pelayar…” dan pilih fail frm; dan
4. Klik pada butang “Muat naik” dan skrip penciptaan Jadual akan dipaparkan pada skrin.

Ia adalah mungkin untuk menghantar berbilang fail frm sekali menghasilkan skrip yang tunggal dengan semua jadual. Semata-mata untuk membenarkan anda mencipta .zip yang dengan semua .frm yang sebelum “Pelayar/Upload”.

2º Kaedah | Menggunakan –diagnostik

/* Contoh generik */
   mysqlfrm-diagnostik "<laluan sumber>/mytable.FRM" > "<Destination/PATH/recovered_mytable.SQL>"
 
/* Contoh dalam amalan dengan jadual wp_posts.frm WordPress */
   mysqlfrm --diagnostik "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.FRM" > "C:\recovered_wp_posts.SQL"

3º Kaedah | Menggunakan –Pelayan

/* Contoh generik */
  pelayan-mysqlfrm=akar:mypassword@localhost-pelabuhan=3311 "<laluan sumber>/mytable.FRM" > "<Laluan/destinasi>/recovered_mytable.SQL"
 
/* Contoh dalam amalan dengan jadual wp_posts.frm WordPress */
  mysqlfrm --Pelayan=akar@localhost --Port=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.FRM" > "(C):\recovered_wp_posts.SQL"

Jangan gunakan pelabuhan MySQL! Pilih mana-mana lain disediakan. Ambil perhatian bahawa perintah yang dilencongkan ke output kepada fail .SQL yang disimpan dalam laluan yang ditetapkan (dalam kes, (C):).

Langkah 2: Mencipta semula pada jadual dalam pangkalan data anda

Dalam pangkalan data baru, mewujudkan Jadual dijana skrip dalam langkah 1. Saya secara peribadi dipasang versi WampServer yang bersih dan menggunakan PHPMyAdmin (http://localhost/phpmyadmin /) untuk mencipta pangkalan data dan mengimport skrip SQL dicipta dalam langkah 1 (recovered_wp_posts.SQL). Skrip ini akan mewujudkan 2 fail-fail dalam direktori pangkalan data MySQL anda:

  SUA_TABELA.FRM SUA_TABELA.IDB

Dalam kes saya, Fail yang dicipta dalam (C):\wamp64binmysqlmysql5.7.14data<kerusi saya>. IE, mencari pemasangan MySQL dan ambil perhatian bahawa dalam direktori Tarikh Akan ada pangkalan data anda dan dua fail yang disebut.

Langkah 3: Alih keluar fail .IDB baru

Untuk mengalih keluar fail .IDB baru, jalankan arahan SQL berikut:

/* Contoh generik */
  Mytable mengubah Jadual TABLESPACE buang;
 
/* Contoh dalam amalan dengan jadual wp_posts WordPress */
  Wp_posts mengubah Jadual TABLESPACE buang;

Perintah ini membuang kaitan antara jadual dan tablespace dalam (Di mana dari segi fizikal disimpan fail pangkalan data), dan mengalih keluar fail .IDB.

Langkah 4: Salin fail .IDB lama

Fail asal .IDB (tersebut tidak mengandungi data) keperluan untuk disalin ke tempat yang mendapat dihapuskan dalam langkah .IDB 3. Gunakan Ctrl + C dan Ctrl + V, atau membunuh diri sendiri dengan menggunakan command line.

Langkah 5: Mengaktifkan semula Jadual

Pautan rosak dalam langkah 3 perlu diambil semula dengan arahan berikut:

/* Contoh generik */
  MENGUBAH Jadual mytable IMPORT TABLESPACE;
 
/* Contoh dalam amalan dengan jadual wp_posts WordPress */
  MENGUBAH Jadual wp_posts IMPORT TABLESPACE;

Jangan bimbang jika anda menerima beberapa amaran yang, Walau bagaimanapun, Ia mungkin kerosakan umum yang muncul ralat berikut:

  #1808 - Tidak sepadan skima (Jadual mempunyai format berturut-turut ROW_TYPE_DYNAMIC, .Fail IBD mempunyai format berturut-turut ROW_TYPE_COMPACT.)

Dalam kes ini, Ini berlaku kerana berbeza daripada mysql 5.7.14 (BARU) mencipta jadual lalai berbanding Mysql-5.6.17 (LAMA), tanpa ROW_FORMAT kepada = padat.

Jadi, Jika anda menggunakan MySQL > = mysql 5.7.14, apa yang anda perlu lakukan ialah menambah ROW_FORMAT = padat dalam takrif pembentukan Jadual.

  MENCIPTA jadual 'wp_posts' (. . .) ENJIN=Innodb ROW_FORMAT=padat

Outros erros

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

  # Sumber localhost: ... bersambung.
  # Memulakan pelayan spawned pada port 3304 ... Ralat mencuba untuk berhenti gagal melahirkan pelayan.  Proses id = 6648.
  RALAT: Peraturan operasi server yang gagal. Ralat pelayan klon: Dapat berkomunikasi dengan baru contoh. Proses id = 6648.. Untuk mendiagnosis, Jalankan utiliti semula dan menggunakan dalam --pilihan verbosity untuk melihat mesej-mesej daripada pelayan spawned dan membetulkan sebarang ralat dikemukakan kemudian jalankan utiliti semula.
  KEJAYAAN: Proses dengan PID 6648 (kanak-kanak proses PID 7264) telah ditamatkan.
Traceback (terbaru panggilan buat):
  Fail "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", talian 27, dalam <Modul>
  Fail "scripts\mysqlfrm.py", talian 422, dalam <Modul>
  Fail ".\mysql\utilities\command\read_frm.py", talian 439, di read_frm_files
  Fail ".\mysql\utilities\command\read_frm.py", talian 166, di _spawn_server
  Fail ".\mysql\utilities\command\serverclone.py", talian 180, di clone_server
  Fail ".\mysql\utilities\common\tools.py", talian 273, di get_mysqld_version IOError: [Errno 13] Kebenaran yang dinafikan: 'version_check'

Tiada caso do específico WordPress, anda perlu mengalih keluar skrip yang dihasilkan SQL yang dihasilkan di bawah. frm, Semua penyertaan lalai ‘0000-00-00 00:00:00’, Sebaliknya, akan menangkap ralat:

  #1067 - Nilai lalai (lalai) tidak sah untuk 'comment_date'

Thats it!

Fon

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

Jumlah hits: 21390

12 Komen terakhir “Pulihkan Jadual MySQL apabila hanya di .frm fail and. ibd sedia ada

  1. Rodrigo berkata:

    Apa yang perlu dilakukan apabila anda melihat mesej ralat berikut: #1815 – Ralat dalaman. Tidak boleh set semula LSNs dalam Jadual “kerusi saya”.”myTable”: Kerosakan struktur data.
    Boleh saya jalankan memasukkan data secara manual? Cara untuk melakukan ini?
    Sejak sudah terima kasih.

  2. Cristian U berkata:

    Hi Taylor,

    Bagaimana anda menyelesaikan ralat ini:
    RALAT: Peraturan operasi server yang gagal. Ralat pelayan klon: Dapat berkomunikasi dengan contoh baru. Proses id = 6648.. Untuk mendiagnosis, Jalankan utiliti lagi dan menggunakan dengan –pilihan verbosity untuk melihat mesej-mesej daripada pelayan spawned dan membetulkan sebarang ralat dikemukakan kemudian jalankan utiliti semula.
    KEJAYAAN: Proses dengan PID 6648 (kanak-kanak proses PID 7264) telah ditamatkan.

    Saya terus menerima mesej yang sama dan saya don´t tahu bagaimana untuk menyelesaikan ia.

    Terima kasih

  3. Reginaldo Luiz de Freitas berkata:

    Tahniah Taylor, tetapi didactic mustahil!! kau lelaki sama!

    pelukan dan terima kasih kerana berkongsi pengalaman anda!

tinggalkan balasan

Ini alamat e-mel anda tidak akan disiarkan. Medan yang diperlukan akan ditandakan dengan *