Odzyskać tabel MySQL, gdy dostępne są tylko .frm pliki ibd i.

Jak rozwiązać “MySQL błąd #1146 -Tabela nie istnieje” spowodowane przez przenoszenie plików .IDB (InnoDB) bezpośrednio między katalogów (łyżka stołowa).

logo_mysql

Problem

Wiele problemów, które mamy są problemy, stworzyliśmy. Miałem po prostu skonfigurować witrynę za pomocą WordPress i myśli: Jak o widząc, jak to działa w PHP 7? Ok, jak mój WampServer używane PHP 5.6, więc musiałem “szczęśliwy” pomysł, aby uaktualnić WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, PHP 5.5.12) dla WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP i Php 7.0.10).

Oczywiście, rozpoczęty przez kopia zapasowa, ale mój świetny poślizg był wybierz nie, aby wyeksportować SQL z takiej strony, Zamiast tego, po prostu się kopię plików MySQL (Bazy danych MySQL /) i aplikacji (strony www /). Byłem przekonany, że to działa, Podobnie jak inne czasy.

Po zainstalowaniu nowego WampServer z PHP 7, umieścić pliki kopii zapasowej i z tyłu aplikacji, tylko, kiedy poszedłem do testowania przez przeglądarkę, nie pojawi się Strona, ale ekran instalacji WordPress tak jakby nową witrynę. Zamarzł w górze! Otwórz PHPMyAdmin i sprawdzić, czy baza danych została Ok i zobaczyłem, że, Pomimo tego, że wymienione w bazie danych, Po kliknięciu na górze tabeli, aby wyświetlić dane następujący komunikat o błędzie:

  MySQL Błąd #1146 -Tabela <NAZWA_TABELI> nie robi ' t istnieje

I zostały poszukiwania i właśnie dowiedziałem się, że tylko można skopiować lub przenieść pliki bezpośrednio do innego katalogu MySQL MySQL, jeśli pliki są MyISAM typu, te z frm rozszerzenie pliku. MYD. MYI. Nie wiem, co się stało, ale moja baza danych pojawił się jako InnoDB (.FRM i. idb). Niestety, tylko po fakcie, że MySQL w pogotowiu dokumentacji:

  Nie można swobodnie przenosić .Pliki IBD między bazy danych katalogów The Można z MyISAM stół pliki. 
  Definicja tabela przechowywane w tabel InnoDB udostępnione zawiera nazwę bazy danych. 
  Identyfikatorów transakcji i Dziennik numery sekwencji, przechowywane w plikach łyżka stołowa różnią się także między bazami danych.

Rozwiązanie

Mam zrobić kilka prostych rozwiązań, ale opiszę tutaj jedynym, który naprawdę pracował dla mnie, Chociaż wydaje się znacznie bardziej złożone, znaleźć w poście “Przywrócenie tabeli(s) bazy MySQL, gdy pliki frm lub ibd są dostępne tylko“.

Przed, Jednak, tytuł wiedzy, Pamiętaj, że w związku z InnoDB typu, MySQL straży struktury plików i danych w ibd .frm.. Wystarczy teorii, Let's cięcia do pościgu!

Krok 1: Ponownie utworzyć strukturę .frm plików

Jak powiedział, frm zawiera struktury tabeli. Najpierw musimy pobrać tę strukturę, aby następnie wypełnić dane. Można to zrobić 3 różnych metod opisanych poniżej, ale przed, Pozwól mi powiedzieć coś na temat “MySQL Utilities”.

MySQL Utilities | mysqlfrm

Jeśli nie zamierzasz użyć pierwszej metody proponowane (Online) więc musisz użyć narzędzia “mysqlfrm” dostarczone przez “MySQL Utilities“.

To narzędzie będzie wyodrębnić struktury danych i wygenerować Tworzenie tabel SQL skryptu. Do tego, Pobierz “MySQL Utilities” (coś jak mysql narzędzia-1.6.4-winx64.msi) i zainstalować go.

Otwórz konsolę (Polecenia / Z) i użyj polecenia CD, aby przenieść domyślny katalog instalacyjny (coś w stylu C:\C:Program FilesMySQLMySQL Utilities 1.6\). Należy zauważyć, że w tym katalogu istnieje plik wykonywalny mysqlfrm.exe.

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

Wybierz tylko jedną z poniższych metod do wyodrębnienia struktury tabeli zawarte w .frm pliki:

1º Metoda | Online

1. Przejdź do witryny HTTPS://Recovery.twindb.com/;
2. Kliknij na menu “Odzyskaj strukturę” a następnie w “plik FRM z.“;
3. Kliknij na przycisk “Przeglądarka…” i wybrać plik frm; i
4. Kliknij na przycisk “Upload” i skryptu tworzenia tabela wyświetli się na ekranie.

Istnieje możliwość wysyłania wielu plików frm raz generowania pojedynczy skrypt z wszystkich tabel. Po prostu pozwolić Ci utworzyć .zip z wszystkich jego .frm przed “Przeglądarki/Upload”.

2º Metoda | Za pomocą –diagnostyczne

/* Rodzajowy przykład */
   mysqlfrm diagnostyczne "<ścieżka źródłowa />/MyTable.frm" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Przykład w praktyce z tabeli wp_posts.frm WordPress */
   mysqlfrm --diagnostyczne "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.SQL"

3º Metoda | Za pomocą –Serwer

/* Rodzajowy przykład */
  mysqlfrm serwer=korzeń:moje_hasło@localhost, port=3311 "<ścieżka źródłowa />/MyTable.frm" > "<ścieżka docelowa />/recovered_mytable.SQL"
 
/* Przykład w praktyce z tabeli wp_posts.frm WordPress */
  mysqlfrm --Serwer=korzeń@localhost --Port=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.FRM" > "(C):\recovered_wp_posts.SQL"

Nie należy używać portu MySQL! Wybierz dowolne inne dostępne. Należy zauważyć, że polecenie przekierowuje dane wyjściowe do pliku .SQL, który jest zapisany w określonej ścieżce (w przypadku, (C):).

Krok 2: Ponownie utwórz tabelę w bazie danych

W nową bazę danych, Tworzenie tabeli z wygenerowany skrypt w kroku 1. Osobiście zainstalowałem czystą wersję WampServer i używane PHPMyAdmin (http://localhost/phpmyadmin /) Aby utworzyć bazę danych i zaimportować skrypt SQL, utworzony w kroku 1 (recovered_wp_posts.SQL). Ten skrypt spowoduje utworzenie 2 pliki w katalogu bazy danych MySQL:

  SUA_TABELA.FRM SUA_TABELA.IDB

W moim przypadku, Pliki te zostały utworzone w (C):\wamp64binmysqlmysql5.7.14data<Moje miejsce>. IE, szukać instalacji MySQL i należy pamiętać, że w katalogu Data Będzie bazy danych i dwa pliki wymienione.

Krok 3: Usuń nowy plik .IDB

Aby usunąć nowy plik .IDB, Uruchom następujące polecenie SQL:

/* Rodzajowy przykład */
  ALTER tabela mytable ODRZUCIĆ łyżka stołowa;
 
/* Przykład w praktyce z wp_posts stół WordPress */
  Wp_posts tabeli ALTER TABLESPACE ODRZUCIĆ;

To polecenie usuwa łącze między tabelą a ten łyżka stołowa (W przypadku, gdy są fizycznie przechowywane pliki bazy danych), i Usuń plik .IDB.

Krok 4: Skopiuj plik .IDB stary

Oryginalny plik .IDB (zawierający dane) musi być skopiowany do miejsca, które dostał delegować w kroku .IDB 3. Użyj Ctrl + C i Ctrl + V, lub zabić siebie przy użyciu wiersza polecenia.

Krok 5: Ponowne uaktywnianie tabeli

Przerwane łącza w kroku 3 musi zostać przywrócone za pomocą następującego polecenia:

/* Rodzajowy przykład */
  ALTER tabela mytable IMPORT tabel;
 
/* Przykład w praktyce z wp_posts stół WordPress */
  Wp_posts tabeli ALTER TABLESPACE importu;

Nie martw się, Jeśli otrzymujesz niektóre ostrzeżenia, Jednak, To może być ogólne awarii pojawia się następujący komunikat o błędzie:

  #1808 - Niezgodność schematu (Tabela ma format wiersza ROW_TYPE_DYNAMIC, .IBD plik ma format wiersza ROW_TYPE_COMPACT.)

W takim przypadku, To się stało ze względu na różny sposób niż mysql 5.7.14 (Nowy) tworzy domyślną tabelę w porównaniu do Mysql-5.6.17 (STARY), bez ROW_FORMAT = CD.

Tak, Jeśli używasz MySQL > = mysql 5.7.14, wszystko co musisz zrobić, to dodać ROW_FORMAT = Defragmentuj w definicji tworzenia tabeli.

  CREATE TABLE 'wp_posts' (. . .) SILNIK=InnoDB ROW_FORMAT=Kompaktowe

Outros erros

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

  # Źródła na localhost: ... podłączony.
  # Zaczynając na piedestał serwer na porcie 3304 ... BŁĄD próby zatrzymania nie zrodził serwera.  Identyfikator procesu = 6648.
  BŁĄD: Spawn serwera operacji nie powiodło się. Błąd serwera klon: Może komunikować się z Nowy wystąpienie. Identyfikator procesu = 6648.. Aby zdiagnozować, ponownie uruchomić narzędzie i użyć The --Opcja poziom szczegółowości do wyświetlania wiadomości z serwera zrodził i popraw błędy przedstawione, a następnie ponownie uruchomić narzędzie.
  SUKCES: Proces z PID 6648 (proces podrzędny PID 7264) został zakończony.
Traceback (Ostatnia wywołać ostatnio):
  Plik "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py", Linia 27, w <Moduł>
  Plik "scripts\mysqlfrm.py", Linia 422, w <Moduł>
  Plik ".\mysql\utilities\command\read_frm.py", Linia 439, w read_frm_files
  Plik ".\mysql\utilities\command\read_frm.py", Linia 166, w _spawn_server
  Plik ".\mysql\utilities\command\serverclone.py", Linia 180, w clone_server
  Plik ".\mysql\utilities\common\tools.py", Linia 273, w get_mysqld_version IOError: [Errno 13] Odmowa uprawnień: 'version_check'

Nie específico w tym przypadku zrobić WordPress, musisz usunąć skrypt, który wygenerował SQL generowany pod. frm, Domyślnie wszystkie wpisy ‘0000-00-00 00:00:00’, w przeciwnym razie, złapie błąd:

  #1067 - Wartość domyślna (domyślne) nie jest ważna dla 'comment_date'

To jest to!

Czcionki

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

Całkowitej trafienia: 18925

12 Komentarze na temat “Odzyskać tabel MySQL, gdy dostępne są tylko .frm pliki ibd i.

  1. Rodrigo powiedział:

    Co zrobić, gdy pojawi się następujący komunikat o błędzie: #1815 – Błąd wewnętrzny. Nie można zresetować LSNs w tabeli “Moje miejsce”.”myTable”: Uszkodzenie struktury danych.
    Można uruchomić ręcznie wstawia dane? Jak to zrobić?
    Od już Dziękujemy.

  2. Cristian U powiedział:

    Witam Taylor,

    Jak można rozwiązać ten błąd:
    BŁĄD: Spawn serwera operacji nie powiodło się. Błąd serwera klon: Może komunikować się z nowego wystąpienia. Identyfikator procesu = 6648.. Aby zdiagnozować, ponownie uruchomić narzędzie i używać –Opcja poziom szczegółowości do wyświetlania wiadomości z serwera zrodził i popraw błędy przedstawione, a następnie ponownie uruchomić narzędzie.
    SUKCES: Proces z PID 6648 (proces podrzędny PID 7264) został zakończony.

    Wciąż dostaję ten sam komunikat i wiem jak go rozwiązać.

    Dzięki

  3. Reginaldo Luiz de Freitas powiedział:

    Taylor gratulacje, ale dydaktycznych niemożliwe!! ty jesteś ten sam facet!

    Hug i dzięki za dzielenie się swoimi doświadczeniami!

Odpowiedz

Twój adres e-mail nie zostaną opublikowane. Wymagane pola są oznaczone *