Импорт файлов .frm и .opt в MySQL - PullRequest
19 голосов
/ 21 апреля 2011

Я использую MySQL 5.5.1.1, скачанный и установленный с: http://dev.mysql.com/downloads/

Я хочу импортировать файлы базы данных .frm и .opt с моего локального компьютера в базу данных mysql.

Я создал новое соединение с базой данных, чтобы помочь мне импортировать файлы с моего компьютера. Но я не могу импортировать файлы .frm, так как получаю сообщение об ошибке: Формат не поддерживается.

Может кто-нибудь помочь мне с тем, как я могу импортировать файлы в клиент MySQL ??

Спасибо, J * +1010 *

Ответы [ 4 ]

26 голосов
/ 22 апреля 2011

Что касается импорта любых данных MySQL, необходимо учитывать три (3) вещи.

MyISAM

Импорт таблицы MyISAM - это просто перемещение трех файлов с расширениями .frm,Файлы .MYD и .MYI для данной таблицы в папку MySQL.Например, если имя таблицы - mydata, то три (3) файла

  • mydata.frm
  • mydata.MYD
  • mydata.MYI

Следующим может быть кошмар ночных кошмаров.Импорт InnoDB полностью зависит от многих факторов, относящихся к одной из двух категорий:

InnoDB ( innodb_file_per_table отключено [по умолчанию])

Все страницы данных и индексов InnoDB расположены в/var/lib/mysql/ibdata1.Этот файл должен быть перемещен с исходного компьютера (Server-S) на целевой компьютер (Server-T) и размещен по тому же абсолютному пути.На самом деле, вот шокер: Server-S и Server-T должны быть одинаковыми.Другими словами, вы не можете импортировать и экспортировать файлы InnoDB .ibd на другие машины.Их можно импортировать и экспортировать только на том же компьютере, на котором была создана .ibd.

Вам также необходимо переместить / var / ib / mysql / ib_logfile0 и / var / ib / mysql / ib_logfile1 с сервера-S и поместить их в тот же абсолютный путь на Server-T.

Вы также должны убедиться, что каждая переменная InnoDB, установленная в /etc/my.cnf из Server-S, должна быть установлена ​​в / etc / my.cnf на сервере-T.

InnoDB ( innodb_file_per_table включена)

Для каждой таблицы InnoDB будет два файла.Например, если таблица InnoDB в базе данных mydata называется mytable, у вас будет /var/lib/mysql/mydata/mytable.frm и /var/lib/mysql/mydata/mytable.ibd.Файл .ibd содержит данные и индексные страницы для таблицы.Чтобы импортировать отдельную таблицу, необходимо

  1. Поместить mytable.frm в /var/lib/mysql/mydata folder на сервере-T
  2. Поместить mytable.ibd в /var/lib/mysql/mydata folder на сервере-T
  3. Выполнить ALTER TABLE mydata.mytable IMPORT TABLESPACE;

Убедитесь, что у вас есть /var/lib/mysql/ibdata1 в том же месте, откуда он был импортирован.

Мораль истории

Пожалуйста, не используйте методы IMPORT TABLESPACE на разных серверах.Просто сделайте mysqldump из всего и импортируйте mysqldump.Логические дампы - всегда самый безопасный путь !!!

6 голосов
/ 20 августа 2012

Я сделал импорт MySQL, используя файлы на xampp. У меня очень много баз данных, поэтому я не хотел идти по пути mysqldump. Процесс был:

  1. Установите новый xampp, но не включайте службы
  2. Обновление my.ini для включения любых пользовательских настроек, которые были у меня при предыдущей установке.
  3. Подтвердите, что mysql запускается успешно
  4. Скопируйте все папки базы данных (внутри папки данных) из старой установки, за исключением mysql , phpmyadmin и webauth .
  5. Подтвердите, что mysql запускается успешно
  6. Копирование ib_logfile0 , ib_logfile1 и ibdata1 . Сначала переименуйте файлы, не перезаписывайте их на случай, если что-то пойдет не так.
  7. Подтвердите, что mysql запускается успешно
  8. Скопируйте следующие файлы из папки data / mysql : db.frm , db.MYD , db.MYI, user.frm , user.MYD , user.MYI . Не перезаписывайте новые только в том случае, если они не работают.
  9. Подтвердите, что mysql запускается успешно

В конце процесса MySQL работал отлично со всеми моими базами данных и целыми пользователями.

0 голосов
/ 25 июля 2013

Я думаю, что большая проблема, с которой вы можете столкнуться, связана с тем, что вы даже не можете просматривать эти файлы .frm в интерфейсе phpmyadmin (потому что они действительно являются неполными наборами).Я бы посоветовал вам удалить эти файлы из текущего местоположения и использовать phpmyadmin для воссоздания этих таблиц как SQL на вкладке «запрос» [удалить, если у вас есть сценарий базы данных всего.если нет, вы все равно можете получить это из старой свалки.если не gaian, НЕ удаляйте).Спасибо: Чагберт.

0 голосов
/ 20 июня 2013

Просто скопируйте нужную папку «data» в целевую папку данных mysql, после переименования текущей папки «data», после остановки службы mysql.И экспортировать в файл sql с phpmyadmin, и восстановить текущую папку данных, и импортировать нужные данные sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...