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
mysqlfrmcomando nel prompt dei comandi (cmd). -
In secondo luogo, ottieni le query SQL da
.frmfile usandomysqlfrmcomando: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.