sql >> Database >  >> RDS >> Mysql

Tabelstructuur herstellen van fr- en ibd-bestanden

Ik heb de tabel alleen hersteld van .frm en .idb bestanden.

Verkrijg de SQL-query om de tabellen te maken

Als u het schema van uw tabellen al kent, kunt u deze stap overslaan.

  1. Installeer eerst MySQL Utilities .Dan kunt u mysqlfrm . gebruiken opdracht in opdrachtprompt (cmd).

  2. Ten tweede, haal de SQL-query's op van .frm bestanden met behulp van mysqlfrm commando:

    mysqlfrm --diagnostic <path>/example_table.frm
    

Vervolgens kunt u de SQL-query krijgen om dezelfde gestructureerde tabel te maken.Zoals dit:

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;

Maak de tabellen

Maak de tabel(len) aan met behulp van de bovenstaande SQL-query.

Als de oude gegevens nog steeds bestaan, moet u mogelijk eerst de respectieve database en tabellen verwijderen. Zorg ervoor dat je een back-up hebt van de gegevensbestanden.

Herstel de gegevens

Voer deze query uit om nieuwe tabelgegevens te verwijderen:

ALTER TABLE example_table DISCARD TABLESPACE;

Dit verwijdert verbindingen tussen de nieuwe .frm bestand en de (nieuwe, lege) .idb het dossier. Verwijder ook de .idb bestand in de map.

Plaats dan de oude .idb bestand naar de nieuwe map, bijv.:

cp backup/example_table.ibd <path>/example_table.idb

Zorg ervoor dat de .ibd bestanden kunnen worden gelezen door de mysql gebruiker, bijv. door chown -R mysql:mysql *.ibd . uit te voeren in de map.

Voer deze query uit om oude gegevens te importeren:

ALTER TABLE example_table IMPORT TABLESPACE;

Dit importeert gegevens uit de .idb bestand en zal de gegevens herstellen.



  1. SQL Server Express versus express localdb

  2. Waar is mijn ongeldige teken (ORA-00911)

  3. Hernoemen van inplugbare database

  4. MySQL VARCHAR-lengtes en UTF-8