Restauré la tabla desde solo .frm
y .idb
archivos.
Obtener la consulta SQL para crear las tablas
Si ya conoce el esquema de sus tablas, puede omitir este paso.
-
Primero, instale MySQL Utilities .Entonces puedes usar
mysqlfrm
comando en el símbolo del sistema (cmd). -
En segundo lugar, obtenga las consultas SQL de
.frm
archivos usandomysqlfrm
comando:mysqlfrm --diagnostic <path>/example_table.frm
Luego puede obtener la consulta SQL para crear la misma tabla estructurada. Así:
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;
Crea las tablas
Cree la(s) tabla(s) utilizando la consulta SQL anterior.
Si los datos antiguos aún existen, es posible que primero deba eliminar la base de datos y las tablas correspondientes. Asegúrese de tener una copia de seguridad de los archivos de datos.
Restaurar los datos
Ejecute esta consulta para eliminar nuevos datos de la tabla:
ALTER TABLE example_table DISCARD TABLESPACE;
Esto elimina las conexiones entre el nuevo .frm
y el (nuevo, vacío) .idb
expediente. Además, elimine el .idb
archivo en la carpeta.
Luego, coloque el viejo .idb
archivo en la nueva carpeta, por ejemplo:
cp backup/example_table.ibd <path>/example_table.idb
Asegúrese de que .ibd
los archivos pueden ser leídos por mysql
usuario, por ej. ejecutando chown -R mysql:mysql *.ibd
en la carpeta.
Ejecute esta consulta para importar datos antiguos:
ALTER TABLE example_table IMPORT TABLESPACE;
Esto importa datos de .idb
archivo y restaurará los datos.