Sadece .frm dosyaları ve IBD kullanılabilir olduğunda MySQL tabloları yeniden elde etmek

Nasıl çözmek için “MySQL hata #1146 -Tablo mevcut değil” .IDB dosyaları taşıyarak neden oldu (InnoDB) doğrudan dizinler arasında (Tablo alanı).

logo_mysql

Sorun

Biz sorunların çoğunu yarattığımız sorunlar. Sadece WordPress kullanarak bir sitesi kurmak ve düşündüm: Ne dersin PHP'de işlerin nasıl yürüdüğünü görmek 7? Tamam, PHP benim WampServer kullanılan 5.6, zorunda kaldım “mutlu” yükseltmek için fikir WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, PHP 5.5.12) için WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP ve Php 7.0.10).

Elbette, Yedekleme tarafından başladı, Ama büyük belgemi SQL--dan bu yer vermemeniz tercih, Bunun yerine, Sadece MySQL dosyalarının bir kopyasını yaptı (MySQL/veri) ve uygulama (www/site). O-cekti iş emindi, zaman olduğu gibi.

PHP ile yeni WampServer yükledikten sonra 7, yedek dosyaları ve uygulama geri koymak, yalnızca tarayıcı tarafından test etmek için gittiğimde, Site gelmedi, Ama WordPress kurulum ekran sanki yeni bir Site vardı. Buz yukarıya! Açık PHPMyAdmin ve kontrol veritabanı yolunda idi ve gördüm ki görmek için, Veritabanında listelenen rağmen, Verileri aşağıdaki hata iletisini görüntülemek için tablo üst kısmında tıklandığında:

  MySQL Hata #1146 -Tablo <TABLE_NAME> değil ' t var

Ben arıyordum ve sadece yapabilirsiniz öğrendim kopyalama veya dosya MyISAM türü varsa doğrudan başka bir MySQL MySQL dizine dosyaları taşıma, Bu frm dosya uzantısı ile. MYD. MYI. Ne olduğunu bilmiyorum, Ama benim veritabanı InnoDB ortaya çıktı. (.frm ve IDB). Ne yazık ki, Sadece MySQL belgelerine uyarı aslında sonra:

  Serbestçe hareket edemez .veritabanı dizinlerinin arasında IBD dosya olarak MyISAM tablosu dosyaları ile yapabilirsiniz. 
  InnoDB paylaşılan tablo alanı içinde depolanan tablo tanımı veritabanı adını içerir. 
  İşlem kimliklerinin ve günlük sıra numaraları tablo alanı dosyalarında saklanan Ayrıca veritabanları arasında farklı.

Çözüm

Cheguei bir ver algumas soluções basit, Mas onu descrever Müktesebatı única que realmente funcionou para mim, apesar de parecer bem mais complexa, encontrada hiçbir yazı “Tablo geri yükleme(s) frm veya IBD dosyaları yalnızca kullanılabilir olduğunda MySQL veritabanı“.

Anteler, porém, bir http://i622.photobucket.com/albums/tt307/HREMIX/Usher.jpg de conhecimento, Vale lembrar que em relação ao tipo InnoDB, MySQL Muhafız yapınızı dosyaları ve verileri IBD .frm.. Yeterli teorisi, Konuya girelim!

Adım 1: .Frm dosyalarının yapısını yeniden oluşturmak

Dediği gibi, frm, tablo yapısı içerir. İlk veri doldurmak için bu yapı almak gerekir. Bunu yapabilirsin 3 farklı yöntemler aşağıda açıklanan, Ama önce, Hakkında bir şey söyleyeyim “MySQL yardımcı programları”.

MySQL yardımcı programları | mysqlfrm

Önerilen ilk yöntemi kullanmayı düşünmüyorsanız (Online) Yani bu aracı kullanmak gerekir “mysqlfrm” tarafından sağlanan “MySQL yardımcı programları“.

Bu araç veri yapısı ayıklamak ve tablo oluşturma SQL komut dosyasını üret. Bunun için, Download “MySQL yardımcı programları” (onun gibi bir şey mysql-utilities-1.6.4-winx64.msi) ve install o.

Konsol açmak (Komut / İn) ve varsayılan yükleme dizini taşımak için CD komutunu kullanın (C gibi bir şey:\C:Program FilesMySQLMySQL yarar 1.6\). Bu dizin içinde belgili tanımlık executable olduğunu unutmayın mysqlfrm.exe.

  CD "C:\C:Program FilesMySQLMySQL Utilities 1,6"

Yalnızca yöntemlerden birini .frm dosyalarında bulunan, tablo yapısını ayıklamak için seçin:

1º Yöntemi | Online

1. Web sitesine gidin HTTPS://Recovery.twindb.com/;
2. Tıkırtı üstünde yemek listesi “Yapısı yeniden elde etmek” ve daha sonra “frm dosyasından.“;
3. Düğmesini “Tarayıcı…” ve frm dosyanızı seçin; ve
4. Düğmesini “Karşıya yükleme” ve tablo oluşturma komut dosyasının-ecek var göstermek üstünde perde.

Bir kez tüm tabloları ile tek bir komut dosyası oluşturma birden çok dosya frm göndermek de mümkündür. Sadece onun .frm önce ile bir .zip oluşturmak izin “Tarayıcı/Upload”.

2º Yöntemi | Kullanarak –Tanılama

/* Genel örnek */
   mysqlfrm-tanı "<kaynak/yol>/myTable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Wp_posts.frm tablo ile pratik örnek WordPress */
   mysqlfrm --Tanılama "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Yöntemi | Kullanarak –Sunucu

/* Genel örnek */
  mysqlfrm-sunucu=kök:parolam@localhost-port=3311 "<kaynak/yol>/myTable.frm" > "<Hedef/yol>/recovered_mytable.SQL"
 
/* Wp_posts.frm tablo ile pratik örnek WordPress */
  mysqlfrm --Sunucu=kök@localhost --bağlantı noktası=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.frm" > "(C):\recovered_wp_posts.SQL"

MySQL bağlantı noktası kullanmayın! Herhangi bir seçim diğer kullanılabilir. Not komut belirtilen yolda kaydedilen bir .SQL dosyası için çıkış yönlendirir (durumda, (C):).

Adım 2: Veritabanınızda tablo yeniden oluşturun

Yeni bir veritabanında, adımda oluşturulan komut bir tablo oluşturun 1. Ben şahsen WampServer temiz bir sürümü yüklü ve PHPMyAdmin kullanılır (http://localhost/phpmyadmin /) Veritabanını oluşturmak ve adımda oluşturduğunuz SQL komut dosyası almak için 1 (recovered_wp_posts.SQL). Bu komut dosyası oluşturur 2 MySQL veritabanı dizinindeki dosyalar:

  SUA_TABELA.frm SUA_TABELA.IDB

İçinde benim hal, Bu dosyalar oluşturulmuş (C):\wamp64binmysqlmysql5.7.14data<benim yerim>. IE, MySQL Kurulum için bakmak ve dizinde dikkat edin tarihi Veritabanınızı ve iki eğe mezkur olacak.

Adım 3: Yeni .IDB dosyasını kaldırın

Yeni .IDB dosyasını kaldırmak için, Aşağıdaki SQL komutunu çalıştırarak:

/* Genel örnek */
  ALTER TABLE tablom tablo alanı atmak;
 
/* Uygulama wp_posts tablo ile örnekte WordPress */
  ALTER TABLE wp_posts atmak tablo alanı;

Bu komutu, tablo ve tablo alanı arasındaki bağlantıyı kaldırır (Fiziksel olarak depolanan nerede veritabanı dosyaları), ve .IDB dosyasını kaldırın.

Adım 4: Eski .IDB kopyalayabilirsiniz

Orijinal .IDB dosya (veri içeren) .IDB adımda silinen yere kopyalanması gereken 3. Ctrl + C ve Ctrl + V kullanın veya komut satırını kullanarak intihar.

Adım 5: Tabloyu yeniden etkinleştirme

Adımdaki kırık bağlantı 3 Aşağıdaki komut ile geri yüklenmesi gerekiyor:

/* Genel örnek */
  ALTER TABLE mytable al tablo alanı;
 
/* Uygulama wp_posts tablo ile örnekte WordPress */
  ALTER TABLE wp_posts al tablo alanı;

Bazı uyarılar alıyorsanız merak etme, porém, Bu genel arıza aşağıdaki hata görünmüyor olabilir:

  #1808 - Şema Uyumsuzluğu (Tablo ROW_TYPE_DYNAMIC satır biçimi vardır, .IBD dosyası ROW_TYPE_COMPACT satır biçimi vardır.)

Bu durumda, Bu mysql 5.7.14 daha farklı nedeniyle oldu (Yeni) MySQL-5.6.17 için karşılaştırıldığında bir varsayılan tablo oluşturur (ESKİ), ROW_FORMAT kompakt =.

Yani, MySQL kullanıyorsanız > mysql 5.7.14 =, Tek yapmanız gereken bu ROW_FORMAT eklemek tablo oluşturma tanımı kompakt =.

  CREATE TABLE 'wp_posts' (. . .) MOTORU=InnoDB ROW_FORMAT=Kompakt

Diğer hatalar

Sadece bilgin olsun, verilerinden ayıklanması başarı elde etme önce. frm, Bazı hatalar vardı:

  # Localhost kaynağında: ... bağlı.
  # Bağlantı noktasında oluşturulan sunucu başlayan 3304 ... Durdurmaya çalışırken hata oluşturulan sunucu başarısız oldu.  İşlem kimliği = 6648.
  HATA: Spawn sunucu işlemi başarısız oldu. Klon sunucu hatası: İle iletişim kurulamıyor Yeni örnek. İşlem kimliği = 6648.. Tanılamak için, yardımcı programını yeniden çalıştırın ve Kullanım , --olurken sunucusundan gelen iletiler görüntülemek ve hataları düzeltmek için ayrıntı seçeneği sunulan sonra yeniden yardımcı programını çalıştırın.
  BAŞARI: PID ile işlem 6648 (PID alt işlemi 7264) sona erdi.
Traceback (En son son çağrı):
  Dosya "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", satır 27, içinde <modülü>
  Dosya "scripts\mysqlfrm.py", satır 422, içinde <modülü>
  Dosya ".\mysql\utilities\command\read_frm.py", satır 439, read_frm_files içinde
  Dosya ".\mysql\utilities\command\read_frm.py", satır 166, _spawn_server içinde
  Dosya ".\mysql\utilities\command\serverclone.py", satır 180, clone_server içinde
  Dosya ".\mysql\utilities\common\tooLs.py", satır 273, get_mysqld_version IOError: [Errno 13] İzin verilmedi: 'version_check'

WordPress özel durumda, altında oluşturulan SQL oluşturulan komut dosyasını kaldırmanız gerekir. frm, tüm girdileri varsayılan ‘0000-00-00 00:00:00’, Aksi takdirde, hata yakalamak:

  #1067 - Varsayılan değer (Varsayılan) 'comment_date' için geçerli değildir.

İşte böyle!

Yazı tipleri

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

Toplam sayısı: 21481

12 Yorumlar “Sadece .frm dosyaları ve IBD kullanılabilir olduğunda MySQL tabloları yeniden elde etmek

  1. Rodrigo dedi:

    Aşağıdaki hata iletisini gördüğünüzde yapmanız gerekenler: #1815 – İç hata. LSNs tabloda sıfırlanamıyor “benim yerim”.”Tablom”: Veri yapısı bozulması.
    El ile veri ekler çalıştırabilir miyim? Bunun nasıl yapılacağı?
    Beri zaten teşekkürler.

  2. Kimo dedi:

    Sana büyük bir F vermek istiyorum ** Kral YOUUUUUUU teşekkür ederim. sen kurtarmak benim hayat dostum!!!!!

  3. Cristian U dedi:

    Merhaba Taylor,

    Nasıl bu hata çözdü mü:
    HATA: Spawn sunucu işlemi başarısız oldu. Klon sunucu hatası: Yeni örnek ile iletişim kurulamıyor. İşlem kimliği = 6648.. Tanılamak için, yardımcı programını yeniden çalıştırın ve kullanın –olurken sunucusundan gelen iletiler görüntülemek ve hataları düzeltmek için ayrıntı seçeneği sunulan sonra yeniden yardımcı programını çalıştırın.
    BAŞARI: PID ile işlem 6648 (PID alt işlemi 7264) sona erdi.

    Ben tutmak alıcı aynı mesajı ve don´t nasıl çözmek biliyor.

    teşekkürler

  4. Reginaldo Luiz de Freitas dedi:

    Parabéns Taylor, Mas didático impossível!! aynı sen!

    sarılmak ve deneyiminizi paylaştığınız için teşekkür ederiz!

Cevap bırak

E-posta adresinizi yayınlanan olmayacaktır. Gerekli alanları ile işaretlenir *