Назад | Перейти на главную страницу

MySQL как получить данные из файла .frm?

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

Я считаю, что мне нужно получить данные из ibdata1 файл?

Нет данных в .frm файл; этот файл содержит только определение таблицы. Однако, если вы не используете таблицу MyISAM, ожидается, что не будет .MYD или .MYD файлы, потому что они используются только для таблиц MyISAM. Вместо этого данные будут где-то еще - например, для таблиц InnoDB они будут в вашем ibdata* файлов (или, возможно, в файле для каждой таблицы, если у вас есть file_per_table включенный).

Файл .frm на самом деле не содержит никаких данных - это просто определение таблицы. Вы можете прочитать подробности Вот.

Используйте инструмент dbsat.

  1. Скачать с curl -s get.dbsake.net > dbsake
  2. Сделайте его исполняемым chmod u+x dbsake
  3. Получите информацию из вашего файла .frm ./dbsake frmdump path/to/frm/file.frm это выведет что-то вроде:
--
-- Table structure for table `mytable`
-- Created with MySQL Version 5.7.28
--

CREATE TABLE `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(1000) DEFAULT NULL,
  `url` varchar(1000) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Вариант 2

Вы также можете развернуть экземпляр песочницы mysql:

dbsake sandbox -D mysql-backup-dir/
~/sandboxes/sandbox_20200621_192450/sandbox.sh start
~/sandboxes/sandbox_20200621_192450/sandbox.sh mysql