Импорт файлов .frm и .opt в MySQL

#mysql #database

#mysql #База данных

Вопрос:

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

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

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

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

Спасибо, J

Комментарии:

1. Не могли бы вы, пожалуйста, пояснить? файл .frm — это просто дескриптор структуры базы данных. opt — это просто файл общих параметров базы данных. Они не содержат данных. И, конечно, они не могут быть импортированы в клиент MySQL. Они предназначены для сервера MySQL.

Ответ №1:

Что касается импорта любых данных 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-T) и размещен по тому же абсолютному пути. На самом деле, вот в чем загвоздка: Server-S и Server-T должны быть одинаковыми. Другими словами, вы не можете импортировать и экспортировать файлы InnoDB .ibd на другие компьютеры. Они могут быть импортированы и экспортированы только на том компьютере, на котором .ibd был создан.

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

Вы также должны убедиться, что каждая переменная InnoDB, установленная в /etc/my.cnf с сервера-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 в том же месте, откуда он был импортирован.

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

Пожалуйста, не используйте методы импорта ТАБЛИЧНОГО пространства на разных серверах. Просто создайте mysqldump всего и импортируйте mysqldump. Логические дампы — это всегда самый безопасный способ!!!

Комментарии:

1. большое вам спасибо!!! это было действительно полезно. Я сошел с ума, пытаясь разобраться в этом.

2. Означает ли часть «Server-S и Server-T должны быть одинаковыми». что при замене системного диска невозможно импортировать файлы InnoDB frm?

3. у меня тот же вопрос, что и у @Kawu .

4. @Kawu в некоторой степени это было правдой, учитывая, что ответу более двух лет. Более поздние версии MySQL в наши дни имеют возможность передавать базы данных более чистым способом. Пожалуйста, ознакомьтесь с документацией MySQL по переносимым табличным пространствам: dev.mysql.com/doc/refman/5.6/en/tablespace-copying.html

5. 1 — Это было моей последней каплей из-за того, с чем я столкнулся вчера, и, наконец, это работает! Это самое простое решение, которое я нашел в Интернете для решения такого рода проблем. Почему я не нашел это первым?

Ответ №2:

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

  1. Установите новый xampp, но не включайте службы
  2. Обновите my.ini, чтобы включить любые пользовательские настройки, которые у меня были при предыдущей установке.
  3. Подтвердите, что mysql запускается успешно
  4. Скопируйте все папки базы данных (внутри папки data) из старой установки, за исключением 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 у меня работал идеально со всеми моими базами данных и пользователями без изменений.

Комментарии:

1. если вы работаете в Linux, не забудьте указать владельца и группу файлов ib_logfile0, ib_logfile1, ibdata1. Аналогичным образом задайте владельца файлов базы данных.

Ответ №3:

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

Ответ №4:

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