Wat is het FRM-bestandsformaat?
Een .frm-bestand is een MySQL-tabeldefinitiebestand dat informatie opslaat over de structuur en lay-out van een enkele databasetabel. Voor elke tabel wordt één .frm-bestand aangemaakt, en de tabelnaam wordt gebruikt voor de .frm-bestandsnaam - dus een tabel genaamd orders produceert orders.frm in de MySQL-datamap.
Het .frm-formaat registreert alleen het tabelschema: kolomnamen, datatypes, lengtes, standaardwaarden en index/sleutel-metadata. Het bevat nooit rijgegevens. Voor MyISAM-tabellen staan de feitelijke gegevens in een bijbehorend .MYD-bestand (met indexen in een .MYI-bestand); MySQL vereiste alle drie de bestanden samen om volledige toegang te krijgen tot een MyISAM-tabel. InnoDB-tabellen koppelden hun .frm in plaats daarvan aan een apart .IBD-tablespace-bestand.
Het bestand is een eigen „little-endian” binaire blob die begint met de magic bytes 0xFE 0x01. Het werd geïntroduceerd met MySQL 1.0 in 1995 en gebruikt door elke storage engine - zowel MyISAM als InnoDB - tot en met MySQL 5.7 en MariaDB. MySQL 8.0 (december 2018) heeft .frm-bestanden volledig verwijderd en de tabelmetadata verplaatst naar het transactionele datadictionary van InnoDB. MariaDB is na die splitsing doorgegaan met het gebruik van .frm-bestanden.
Wanneer rijgegevens verloren gaan of beschadigd raken, kan een overgebleven .frm-bestand worden geïnspecteerd met het hulpprogramma mysqlfrm om de CREATE TABLE-instructie te reconstrueren en de kolomlay-out te herstellen.
Beveiliging & veiligheid
RISICO: LOWEen .frm-bestand is passieve binaire tabelmetadata - het bevat geen uitvoerbare code en is veilig te hanteren. De praktische risico's liggen bij gegevensherstel, niet bij malware: een .frm die in de verkeerde MySQL-versie wordt hersteld, kan mislukken of het dictionary beschadigen, en een losse .frm zonder de bijbehorende .MYD/.ibd kan uw rijen niet teruggeven. Werk altijd met kopieën, zorg dat de serverversie overeenkomt en houd de bijbehorende gegevensbestanden bij elkaar.
Formaatdetails
in een notendop- Visual Basic Form-bestand - Bronbestand dat de lay-out en besturingselementen van een formulier beschrijft in VB6 en eerder (platte tekst).
- FormFlow Form - Elektronisch formulierdocument gemaakt door de legacy JetForm/FormFlow-software.
- Adobe FrameMaker (legacy) - Oudere FrameMaker-installaties gebruikten .frm voor sommige formulier/sjabloon-bronnen.
0xFE 0x01 voor het klassieke formaat). Er is geen stabiele ASCII-handtekening over verschillende versies heen; het bestand is een eigen binaire blob, dus identificatie vindt plaats via extensie + context (bevindt zich naast .MYD/.MYI of .ibd in een MySQL-datamap).
Programma's die FRM-bestanden openen
SHOW CREATE TABLE / mysqldump uit. De juiste manier om een .frm te gebruiken. CREATE TABLE-instructie rechtstreeks uit het bestand te lezen, zonder een draaiende server. SHOW CREATE TABLE / mysqldump uit. De juiste manier om een .frm te gebruiken. /var/lib/mysql (overeenkomstige versie), start de service en voer vervolgens SHOW CREATE TABLE of mysqldump uit. CREATE TABLE-instructie rechtstreeks uit het bestand te lezen, zonder een draaiende server. Technische details
diepe specificaties| Bestandsstructuur | Eigen little-endian binaire blob; geen compressie of versleuteling |
| Magic bytes | 0xFE 0x01 op offset 0 (versie-afhankelijke binaire header; geen stabiele ASCII-handtekening) |
| Inhoud | Kolomdefinities (namen, types, lengtes, standaardwaarden), index/sleutel-metadata en tabelopties - alleen schema, nooit rijgegevens |
| Typische bestandsgrootte | 1 KB - 50 KB per tabel; groeit mee met het aantal kolommen en indexen |
| MIME-type | application/octet-stream |
| Eén bestand per tabel | Elke tabel krijgt zijn eigen .frm-bestand vernoemd naar de tabel, opgeslagen in de submap van het schema in de MySQL-datamap |
| MyISAM-metgezellen | .MYD (rijgegevens) en .MYI (indexgegevens) - alle drie vereist voor volledige MyISAM-tabeltoegang |
| InnoDB-metgezel | .ibd tablespace-bestand - de .frm bevatte het schema terwijl .ibd de gegevens en indexen bevatte |
| Engine-ondersteuning | Geschreven door alle storage engines in MySQL 3.x - 5.7: MyISAM, InnoDB, MEMORY, CSV, ARCHIVE en andere |
| Verwijderd in | MySQL 8.0 (december 2018): metadata verplaatst naar het InnoDB transactionele datadictionary; geen .frm-bestanden meer aangemaakt of gelezen |
| Nog steeds gebruikt door | MariaDB is doorgegaan met het genereren van .frm-bestanden na de MySQL 8.0-splitsing |
| Herstelhulpprogramma | mysqlfrm (MySQL Utilities) leest een losse .frm om de `CREATE TABLE` DDL-instructie te reconstrueren |
| Ontwikkelaar | MySQL AB (origineel); Oracle Corporation (sinds overname in 2010) |
| Besturingssystemen | Cross-platform: Linux, Windows, macOS, FreeBSD - overal waar MySQL of MariaDB draaide |
| Uitgebracht | 1995 (MySQL 1.0, used by ISAM/MyISAM/InnoDB through MySQL 5.7) |
| Laatste versie | Last used in MySQL 5.7 / MariaDB; removed from MySQL 8.0 (December 2018) |
| Specificatie | dev.mysql.com |
FRM conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over FRM-bestanden.
Veelgestelde vragen
Hoe open ik een .frm-bestand?
SHOW CREATE TABLE uit. Het openen van de ruwe binaire gegevens in een teksteditor toont alleen wartaal.Kan ik mijn gegevens herstellen met alleen een .frm-bestand?
Hoe krijg ik de CREATE TABLE-instructie uit een .frm?
SHOW CREATE TABLE uit.Waarom heeft MySQL 8.0 geen .frm-bestanden?
Ik heb de .frm gekopieerd maar krijg „Table doesn't exist” - waarom?
mysqlfrm om alleen de structuur te lezen.Welke programma's openen .frm naast MySQL?
mysqlfrm leest het zonder server. Er is geen algemene „viewer” - het is een intern formaat voor de server.