Ho ripristinato la tabella solo da .frm
e .idb
file.
Ottieni la query SQL per creare le tabelle
Se conosci già lo schema delle tue tabelle, puoi saltare questo passaggio.
-
Innanzitutto, installa MySQL Utilities .Quindi puoi usare
mysqlfrm
comando nel prompt dei comandi (cmd). -
In secondo luogo, ottieni le query SQL da
.frm
file usandomysqlfrm
comando:mysqlfrm --diagnostic <path>/example_table.frm
Quindi puoi ottenere la query SQL per creare la stessa tabella strutturata. In questo modo:
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 le tabelle
Crea le tabelle utilizzando la query SQL precedente.
Se i vecchi dati esistono ancora, potrebbe essere necessario eliminare prima il database e le tabelle rispettivi. Assicurati di avere un backup dei file di dati.
Ripristina i dati
Esegui questa query per rimuovere i nuovi dati della tabella:
ALTER TABLE example_table DISCARD TABLESPACE;
Questo rimuove le connessioni tra il nuovo .frm
file e il (nuovo, vuoto) .idb
file. Inoltre, rimuovi il .idb
file nella cartella.
Quindi, inserisci il vecchio .idb
file nella nuova cartella, ad esempio:
cp backup/example_table.ibd <path>/example_table.idb
Assicurati che il .ibd
i file possono essere letti da mysql
utente, ad es. eseguendo chown -R mysql:mysql *.ibd
nella cartella.
Esegui questa query per importare i vecchi dati:
ALTER TABLE example_table IMPORT TABLESPACE;
Questo importa i dati da .idb
file e ripristinerà i dati.