#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
Файл содержит данные и индексные страницы для таблицы. Для импорта отдельной таблицы необходимо
- Поместите
mytable.frm
в/var/lib/mysql/mydata folder
на сервере-T - Поместите
mytable.ibd
в/var/lib/mysql/mydata folder
на сервере-T - Выполнить
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. Процесс был:
- Установите новый xampp, но не включайте службы
- Обновите my.ini, чтобы включить любые пользовательские настройки, которые у меня были при предыдущей установке.
- Подтвердите, что mysql запускается успешно
- Скопируйте все папки базы данных (внутри папки data) из старой установки, за исключением mysql, phpmyadmin и webauth.
- Подтвердите, что mysql запускается успешно
- Скопируйте ib_logfile0, ib_logfile1 и ibdata1. Сначала переименуйте файлы, не перезаписывайте на случай, если что-то пойдет не так.
- Подтвердите, что mysql запускается успешно
- Скопируйте следующие файлы из папки data /mysql: db.frm, db.MYD, db.MYI, user.frm, user.MYD, user.MYI. Не перезаписывайте новые на случай, если это не сработает.
- Подтвердите, что mysql запускается успешно
В конце процесса mysql у меня работал идеально со всеми моими базами данных и пользователями без изменений.
Комментарии:
1. если вы работаете в Linux, не забудьте указать владельца и группу файлов ib_logfile0, ib_logfile1, ibdata1. Аналогичным образом задайте владельца файлов базы данных.
Ответ №3:
Просто скопируйте нужную папку «data» в целевую папку данных mysql, после переименования текущей папки «data», после остановки службы mysql. И экспортируйте в sql-файл с помощью phpmyadmin, и восстановите текущую папку с данными, и импортируйте нужные данные sql.
Ответ №4:
Я думаю, что большая проблема, с которой вы можете столкнуться, связана с тем фактом, что вы не можете даже просмотреть эти файлы .frm в интерфейсе phpmyadmin (потому что они действительно являются неполными наборами). Я бы посоветовал вам удалить эти файлы из текущего местоположения и использовать phpmyadmin для повторного создания этих таблиц в виде SQL на вкладке «запрос» [удалить, если у вас есть скрипт базы данных для всего. если нет, вы все равно можете получить это из старого дампа. если не gaian, не удаляйте). Спасибо: чагберт.