Как перенести файлы .frm в таблицу? - PullRequest
2 голосов
/ 07 октября 2011

У меня есть файлы .frm из Windows, и теперь я использую Ubuntu. Как я могу создать ту же таблицу, что и в Windows, только из файлов .frm? Я прочитал, что могу просто скопировать и вставить эти файлы, но в Ubuntu нет папки MySQL / data, и я понятия не имею, где они хранят таблицы MySQL с файлами типа .frm. Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Подожди минутку !!

Помните, что файлы .frm содержат только макет описания таблицы.

Если у вас есть все таблицы MyISAM, скопируйте соответствующие .MYD и .MYI.файлы в ту же папку, что и .frm, достаточно.@Brad уже заявил об этом в своем ответе.(+1 от меня за его ответ)

Теперь, если таблица InnoDB, перемещения .frm будет недостаточно.Почему?

InnoDB хранит четыре типа информации в / var / lib / mysql / ibdata1

  • Страницы данных
  • Индексные страницы
  • Таблица метаданных
  • Данные MVCC

Файл ibdata1 должен быть скопирован как / var / lib / mysql.Вы также должны убедиться, что все настройки для innodb в /etc/my.cnf исходного сервера БД скопированы в /etc/my.cnf целевого сервера БД.

Если какой-либо частью ваших данных является InnoDB, вам гораздо лучше выполнить mysqldump всех данных (кроме баз данных information_schema и mysql) и загрузить его в новую установку MySQL на целевой машине.

А как насчет базы данных mysql?Существует два способа портировать схему mysql без использования mysql_upgrade:

ВАРИАНТ 1: Использовать mk-show-grants (или pt-show-grants Perka Toolkit)

Это выдает все MySQL Grants как операторы SQL, которые полностью переносимы на любой экземпляр MySQL 5.x.

ВАРИАНТ 2: Выполнить эти команды (Моя личная эмуляция того, что mk-show-grants делает)

mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql

Вывод любого из этих методов приведет к командам GRANT для всех неанонимных пользователей (который не зависит от версии).После создания файла MySQLUserGrants.sql загрузите его на целевой сервер БД.

2 голосов
/ 07 октября 2011

Файл .frm содержит только формат таблицы и составляет , а не всей таблицы. Вам также нужен файл данных, который, вероятно, .myd / .myi.

После того, как вы переместите эти файлы, обязательно запустите mysql_upgrade, чтобы убедиться, что скопированные файлы будут на 100% совместимы с конкретной версией MySQL, которую вы используете.

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