Відновити таблиць MySQL, коли доступні тільки на .frm файлів і. ibd

Як вирішити “MySQL помилка #1146 -Таблиці не існує” викликані переміщення .IDB файлів (InnoDB) безпосередньо між каталоги (Табличний простір).

logo_mysql

Проблема

Багато проблем, у нас є проблеми, ми створили. Я просто створити сайт за допомогою WordPress і думав: Як щодо, бачачи, як це працює на PHP 7? Гаразд, використовувані вашим мій WampServer PHP 5.6, тому я повинен був “Щасливий” ідеєю, щоб перейти до WampServer 2.5 (Apache-2.4.9, MySQL-5.6.17, PHP 5.5.12) для WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5.6.25 PHP і Php 7.0.10).

Звичайно, робіт по резервного копіювання, але мій великий slip був не хочете експортувати SQL з такого сайту, Замість цього, тільки що зробив копії MySQL файли (MySQL/даних) і застосування (www/сайту). Я був впевнений, що вона буде працювати, як і інші часи.

Після інсталяції нового WampServer з PHP 7, покласти резервного копіювання файлів і додатків назад, тільки, коли я прийшов, щоб перевірити у браузері, не з'являвся на сайті, але екран установки WordPress неначе це новий сайт. Замерзав! Відкрити PHPMyAdmin і перевірити, якщо базу даних було ОК, і я побачив, що, Незважаючи на зазначення переліку у базі даних, Коли ви натиснули на вершині таблиці для перегляду даних таке повідомлення про помилку:

  MySQL Помилка #1146 -Таблиці <TABLE_NAME> doesn ' t існувати

Я шукав і я тільки що дізнався що ви можете тільки скопіювати або перемістити файли безпосередньо в інший каталог MySQL MySQL, якщо файли MyISAM типу, ті, з frm розширення файлу. MYD. MYI. Я не знаю, що сталося, але мою базу даних з'явився як InnoDB (.FRM ІБР і.). На жаль, тільки після факту, що MySQL попередив документації:

  Ви не можете вільно рухатися .IBD файли між бази даних каталогів як Ви можете з таблиць MyISAM файли. 
  Визначення таблиці, зберігаються в простір таблиці InnoDB поділився включає ім'я бази даних. 
  Транзакції ідентифікатори та Вхід послідовність числа, які зберігаються у файлах Табличний простір також відрізняються між базами даних.

Рішення

Cheguei дуже ці algumas soluções проста, Mas цифровим клавішам descrever aqui única que realmente funcionou para МІМ, apesar de parecer bem mais complexa, encontrada жодна посада “Відновлення таблиці(s) у базі даних MySQL, коли frm або ibd файлів доступні тільки“.

Анте, porém, título de conhecimento, Vale lembrar que em relação Ао tipo InnoDB, MySQL гвардії структуру, в файли і дані в .frm. ibd. Достатньо теорія, Давайте скоротити до погоні!

Крок 1: Повторно створити структуру .frm файли

Як сказав:, на frm містить структуру таблиці. Нам необхідно отримати структури, потім заповнення даних. Для цього 3 різні методи, описані нижче, Але перш ніж, Дозвольте мені сказати вам що-небудь про у “MySQL утиліти”.

MySQL утиліти | mysqlfrm

Якщо ви не маєте наміру використовувати перший метод, запропонований (Онлайн) тому ви повинні використовувати інструмент “mysqlfrm” передбачено в “MySQL утиліти“.

Цей інструмент видобування даних структури і генерувати створення таблиці SQL-сценарії. Для цього, Завантажити “MySQL утиліти” (щось на зразок mysql утиліти-1.6.4-winx64.msi) і встановити його.

Відкрити консоль (Команда / З на) і за допомогою команди CD для переміщення каталозі установки за замовчуванням (щось на зразок C:\C:Program FilesMySQLMySQL утиліти 1.6\). Зверніть увагу, що в рамках цього каталогу виконуваний файл mysqlfrm.exe.

  КОМПАКТ-ДИСК "C:\C:Program FilesMySQLMySQL утиліти 1,6"

Вибрати тільки один з методів нижче витягти вашу структуру таблиці, що містяться в .frm файли:

1º Метод | Онлайн

1. На веб-сайті HTTPS://Recovery.twindb.com/;
2. Виберіть у меню команду “Відновити структури” а потім, в “FRM файл з.“;
3. Натисніть на кнопку “Браузер…” і вибрати потрібний файл frm; і
4. Натисніть на кнопку “Завантажити” і створення сценарію таблиці буде відображатися на екрані.

Є можливість відправити кілька файлів frm колись генерації один сценарій з усіх таблиць. Просто щоб ви створити на .zip з його .frm перед “Переглядач/завантажити”.

2º Метод | За допомогою –діагностичні

/* Загальний приклад */
   mysqlfrm діагностичну "<шлях до/джерела>/MyTable.FRM" > "<Destination/Path/recovered_mytable.SQL>"
 
/* Приклад на практиці з wp_posts.frm таблицею в WordPress */
   mysqlfrm --діагностичні "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.FRM" > "C:\recovered_wp_posts.SQL"

3º Метод | За допомогою –Сервер

/* Загальний приклад */
  mysqlfrm сервер=корінь:mypassword@локальний порт=3311 "<шлях до/джерела>/MyTable.FRM" > "<шлях призначення />/recovered_mytable.SQL"
 
/* Приклад на практиці з wp_posts.frm таблицею в WordPress */
  mysqlfrm --Сервер=корінь@Localhost --порт=3307 ""(C):\wampbinmysql\mysql5.6.17\data\meubanco\wp_posts.frm" > "(C):\recovered_wp_posts.sql"

Não use a porta do MySQL! Escolha qualquer outra disponível. Note que o comando redireciona a saída para um arquivo .sql que é salvo no caminho especificado (no caso, (C):).

Крок 2: Recrie a tabela no seu Banco de Dados

Em uma base de dados nova, crie uma tabela com o script gerado no Passo 1. Я особисто установлених чистого варіанту WampServer і PHPMyAdmin (http://Localhost/phpmyadmin /) Щоб створити базу даних та імпортуйте скрипт SQL, створений на кроці 1 (recovered_wp_posts.SQL). Цей сценарій буде створювати 2 файли в каталозі копіювання баз даних MySQL:

  SUA_TABELA.FRM SUA_TABELA.ІБР

У моєму випадку, Ці файли були створені в (C):\wamp64binmysqlmysql5.7.14data<моє місце>. IE, procure sua instalação do MySQL e note que no diretório data 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;

Ця команда видаляє зв'язок між таблицею і простір таблиці (Де зберігаються фізично файли бази даних), а видаліть файл .IDB.

Крок 4: Скопіюйте файл старої .IDB

Вихідний файл .IDB (який містить дані) потрібно скопіювати до місця, що отримав видалені в .IDB крок 3. Використовуйте Ctrl + C і Ctrl + V або вбити себе за допомогою командного рядка.

Крок 5: Повторна активація таблиці

Недійсне посилання в кроці 3 потреби відновити такою командою:

/* Загальний приклад */
  ALTER TABLE mytable імпорту Табличний простір;
 
/* Exemplo na prática com a tabela wp_posts do WordPress */
  ALTER TABLE wp_posts імпорту Табличний простір;

Не хвилюйтеся, якщо ви отримуєте деякі попередження, porém, Це може бути загальна несправності, з'являється таке повідомлення про помилку:

  #1808 - Невідповідність схеми (Таблиця із ROW_TYPE_DYNAMIC рядка формат, .IBD файл має формат рядка ROW_TYPE_COMPACT.)

У цьому випадку, Це сталося через інакше, ніж mysql 5.7.14 (НОВІ) створюється за промовчанням таблиця в порівнянні з Mysql-5.6.17 (СТАРИЙ), без на ROW_FORMAT = компакт.

Так, Якщо використовується MySQL > = mysql 5.7.14, все, що вам потрібно зробити, це додати ROW_FORMAT = компакт у визначенні створення таблиці.

  CREATE TABLE 'wp_posts' (. . .) ДВИГУН=InnoDB ROW_FORMAT=Компактний

Інші помилки

Просто для запису, до одержання успіху в вилучення даних з. frm, Я мав деякі помилки:

  # Джерело на локальній системі: ... підключено.
  # Починаючи породив сервера на порт 3304 ... Помилка під час спроби зупинити не вдалося породив сервера.  Процес з ідентифікатором = 6648.
  ПОМИЛКА: Породжувати сервер операцію не вдалося. Клон помилка сервера: Не вдалося зв'язатися із нові екземпляр. Процес з ідентифікатором = 6648.. Для діагностики, знову запустіть утиліту і використання на --багатослівність варіант для перегляду повідомлень із породив сервера і виправити помилки представлені, а потім знову запустіть утиліту.
  УСПІХ: Процес з PID 6648 (Дочірній процес PID 7264) було припинено.
Traceback (Востаннє називати останній):
  Файл "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-Windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.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, вам потрібно буде вилучити скрипт, який generated 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

Усього відвідувань: 14813

10 висловлюється про “Відновити таблиць MySQL, коли доступні тільки на .frm файлів і. ibd

  1. Родріго сказав::

    Що робити, коли ви побачите таке повідомлення про помилку: #1815 – Внутрішня помилка. Ця команда незастосовна LSNs в таблиці “моє місце”.”myTable”: Структура даних корупції.
    Можна запустити вставляє дані вручну? Як це зробити?
    Оскільки вже дякую вам.

  2. KIMO сказав::

    Я просто хочу, щоб дати вам великий F * * царя ПОДЯКУВАТИ YOUUUUUUU. Ви врятували мій чувак життя!!!!!

  3. Крістіан U сказав::

    Привіт Тейлор,

    Як можна вирішити цю помилку:
    ПОМИЛКА: Породжувати сервер операцію не вдалося. Клон помилка сервера: Не вдалося зв'язатися із новий екземпляр. Процес з ідентифікатором = 6648.. Для діагностики, знову запустіть утиліту і використовувати на –багатослівність варіант для перегляду повідомлень із породив сервера і виправити помилки представлені, а потім знову запустіть утиліту.
    УСПІХ: Процес з PID 6648 (Дочірній процес PID 7264) було припинено.

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

    Thanks

Дати відповідь

На адресу електронної пошти не буде опублікований. Обов'язкові поля помічені *