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

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

logo_mysql

Проблема

Многие из проблем, с которыми у нас являются проблемы, с которыми мы создали. Я только что создали сайт с помощью WordPress и мысли: Как насчет видя, как это работает на PHP 7? Ok, как моя 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).

Конечно, Начало резервного копирования, но мой Великий скольжения было выбрать не экспортировать SQL от такого сайта, Вместо этого, просто сделал копию MySQL файлов (Данные MySQL) и применение (www/сайт). Я был уверен, что он будет работать, как другой раз.

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

  MySQL Ошибка #1146 -Таблицы <TABLE_NAME> оленья кожа ' существовать t

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

  Вы не можете двигаться свободно .IBD файлов между каталогов базы данных в Вы можете с MyISAM таблицы файлов. 
  Определение таблицы, хранящиеся в табличной области InnoDB общие включает имя базы данных. 
  Идентификаторов транзакций и Журнал порядковые номера, хранящиеся в файлах базы данных также отличаются между базами данных.

Решение

Я получил сделать некоторые простые решения, но я буду описывать здесь только один, который действительно работает для меня, Хотя это кажется гораздо более сложные, Найдено в пост “Восстановление таблицы(s) в базе данных MySQL, когда frm или ibd файлов доступны только“.

Перед, Однако, название знаний, Помните, что по отношению к 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@localhost порт=3311 "<Источник/путь>/MyTable.frm" > "<путь назначения>/recovered_mytable.SQL"
 
/* Пример на практике с таблицей wp_posts.frm WordPress */
  mysqlfrm --Сервера=корень@localhost --Порт=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.FRM" > "(C):\recovered_wp_posts.SQL"

Не используйте порт MySQL! Выбрать другие доступные. Обратите внимание, что команда перенаправляет выходные данные SQL-файл, который сохраняется в указанном пути (в случае, (C):).

Шаг 2: Повторное создание таблицы в вашей базе данных

В новой базе данных, Создание таблицы с помощью созданного сценария на шаге 1. ЕС particularmente instalei ума versão limpa сделать WampServer e utilizei o PHPMyAdmin (http://localhost/phpmyadmin /) пункт Вороново базы de dados e importar o сценарий SQL КРИАДО не Пассо 1 (recovered_wp_posts.SQL). Este сценарий irá Вороново 2 arquivos база не sua da diretório de dados MySQL:

  SUA_TABELA.FRM SUA_TABELA.МБР

В моем случае, цессы arquivos паралонный criados em (C):\wamp64binmysqlmysql5.7.14data<meubanco>. Другими словами, Посмотрите для установки MySQL и обратите внимание, что в каталоге Дата Там будет база данных и два файла упоминается.

Шаг 3: Удалите новую IDB-файла

Чтобы удалить новый IDB-файла, выполните следующую команду SQL:

/* Общий пример */
  ALTER TABLE mytable ОТБРОСИТЬ табличное пространство;
 
/* Пример на практике с wp_posts таблице WordPress */
  ALTER TABLE wp_posts ОТБРОСИТЬ табличное пространство;

Эта команда удаляет связь между таблицей и табличное пространство (Где физически хранятся файлы базы данных), и удалите IDB-файла.

Шаг 4: Копии старых IDB-файла

Оригинальный IDB-файла (, содержащий данные) необходимо скопировать в место, которые были удалены на шаге .IDB 3. Используйте сочетание клавиш Ctrl + C и Ctrl + V, или убить себя с помощью командной строки.

Шаг 5: Повторная активация таблицы

Сломанной ссылке на шаге 3 должна быть восстановлена с помощью следующей команды:

/* Общий пример */
  ALTER TABLE mytable импорта табличное пространство;
 
/* Пример на практике с wp_posts таблице WordPress */
  ALTER TABLE wp_posts импорта табличное пространство;

Не волнуйтесь, если вы получаете некоторые предупреждения, Однако, Это может быть общий сбой, появляется следующее сообщение об ошибке:

  #1808 - Несоответствие схемы (Таблица имеет формат строки ROW_TYPE_DYNAMIC, .IBD файл имеет формат строки ROW_TYPE_COMPACT.)

В этом случае, Это произошло из-за по-разному чем mysql 5.7.14 (Новые функции) создает таблицу по умолчанию, по сравнению с Mysql-5.6.17 (СТАРЫЙ), без ROW_FORMAT = компактный.

Так, Если вы используете MySQL > = mysql 5.7.14, Tudo que você precisa Фацер é acrescentar ROW_FORMAT = компактный na definição де criação да бирж.

  CREATE TABLE «wp_posts» (. . .) ДВИГАТЕЛЬ=InnoDB ROW_FORMAT=Компактные

Outros erros

Apenas пункт deixar registrado, Анте-де-obter sucesso na extração de dados сделать .frm, ных alguns erros:

  # Источник на localhost: ... подключен.
  # Начиная породил сервер на порту 3304 ... Ошибка при попытке остановить не удалось породил сервера.  Идентификатор процесса = 6648.
  ОШИБКА: Сбой операции сервера икры. Ошибка сервера клон: Не удается связаться с Новые функции экземпляр. Идентификатор процесса = 6648.. Для диагностики, снова запустите утилиту и Использование в --параметр детализации для просмотра сообщений от породил сервера и исправить любые ошибки представил, а затем снова запустите утилиту.
  УСПЕХ: Процесс с PID 6648 (дочерний процесс PID 7264) был завершен.
Прослеживание (последний призыв последнего):
  Файл "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»

Не específico caso WordPress, необходимо удалить скрипт, создавший 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

Всего просмотров: 14898

10 Комментарии по “Восстановление таблиц MySQL, когда доступны только .frm файлы и. ibd

  1. Родриго сказал:

    Что делать, когда вы увидите следующее сообщение об ошибке: #1815 – Внутренняя ошибка. Не удается сбросить номера LSN в таблице “meubanco”.”myTable”: Повреждение структуры данных.
    Можно ли запустить вставки данных вручную? Как это сделать?
    Поскольку уже большое спасибо.

  2. КИМО сказал:

    Я просто хочу дать вам большой F ** король благодарю YOUUUUUUU. Вы спасли мою жизнь чувак!!!!!

  3. Кристиан U сказал:

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

    Как вы решить эту ошибку:
    ОШИБКА: Сбой операции сервера икры. Ошибка сервера клон: Не удается связаться с новым экземпляром. Идентификатор процесса = 6648.. Для диагностики, снова запустите утилиту и использовать –параметр детализации для просмотра сообщений от породил сервера и исправить любые ошибки представил, а затем снова запустите утилиту.
    УСПЕХ: Процесс с PID 6648 (дочерний процесс PID 7264) был завершен.

    Я получаю то же сообщение и я неуютно знают, как ее решить.

    Спасибо

Оставь ответ

Ваш электронный адрес не будет опубликован. Обязательные поля отмечены *