Възстанових таблицата само от .frm
и .idb
файлове.
Вземете SQL заявката за създаване на таблиците
Ако вече знаете схемата на вашите таблици, можете да пропуснете тази стъпка.
-
Първо инсталирайте Помощни програми за MySQL .След това можете да използвате
mysqlfrm
команда в командния ред (cmd). -
Второ, вземете SQL заявките от
.frm
файлове с помощта наmysqlfrm
команда:mysqlfrm --diagnostic <path>/example_table.frm
След това можете да получите SQL заявката за създаване на същата структурирана таблица. Като това:
CREATE TABLE `example_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(150) NOT NULL,
`photo_url` varchar(150) NOT NULL,
`password` varchar(600) NOT NULL,
`active` smallint(6) NOT NULL,
`plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;
Създайте таблиците
Създайте таблицата(ите), като използвате горната SQL заявка.
Ако старите данни все още съществуват, може да се наложи първо да премахнете съответната база данни и таблици. Уверете се, че имате резервно копие на файловете с данни.
Възстановете данните
Изпълнете тази заявка, за да премахнете нови данни в таблицата:
ALTER TABLE example_table DISCARD TABLESPACE;
Това премахва връзките между новия .frm
файл и (нов, празен) .idb
файл. Също така премахнете .idb
файл в папката.
След това поставете стария .idb
файл в новата папка, напр.:
cp backup/example_table.ibd <path>/example_table.idb
Уверете се, че .ibd
файловете могат да се четат от mysql
потребител, напр. като изпълните chown -R mysql:mysql *.ibd
в папката.
Изпълнете тази заявка, за да импортирате стари данни:
ALTER TABLE example_table IMPORT TABLESPACE;
Това импортира данни от .idb
файл и ще възстанови данните.