Vad är filformatet FRM?
En .frm-fil är en MySQL-tabell-definitionsfil som lagrar information om strukturen och layouten för en enskild databastabell. En .frm-fil skapas för varje tabell, och tabellnamnet används som filnamn för .frm - så en tabell med namnet orders genererar orders.frm inuti MySQL-datakatalogen.
Formatet .frm registrerar endast tabellschemat: kolumnnamn, datatyper, längder, standardvärden och metadata för index/nycklar. Den innehåller aldrig raddata. För MyISAM-tabeller finns den faktiska datan i en tillhörande .MYD-fil (med index i en .MYI-fil); MySQL krävde alla tre filerna tillsammans för att få full åtkomst till en MyISAM-tabell. InnoDB-tabeller parade ihop sin .frm med en separat .IBD-tabellutrymmesfil istället.
Filen är en proprietär little-endian binär blob som börjar med de magiska byten 0xFE 0x01. Den introducerades med MySQL 1.0 år 1995 och användes av alla lagringsmotorer - både MyISAM och InnoDB - fram till MySQL 5.7 och MariaDB. MySQL 8.0 (december 2018) tog bort .frm-filer helt och flyttade tabellmetadata till InnoDBs transaktionella datakatalog. MariaDB fortsatte att använda .frm-filer efter den uppdelningen.
När raddata går förlorad eller skadas kan en kvarvarande .frm-fil inspekteras med diagnosverktyget mysqlfrm för att rekonstruera CREATE TABLE-satsen och återställa kolumnlayouten.
Säkerhet & trygghet
RISK: LOWEn .frm-fil är passiv binär tabellmetadata - den innehåller ingen exekverbar kod och är säker att hantera. De praktiska riskerna rör dataåterställning, inte skadlig kod: en .frm som återställs i fel MySQL-version kan misslyckas eller korrumpera katalogen, och en ensam .frm utan dess .MYD/.ibd kan inte returnera dina rader. Arbeta alltid på kopior, matcha den ursprungliga serverversionen och håll de tillhörande datafilerna tillsammans.
Formatdetaljer
i ett nötskal- Visual Basic Form-fil - Källfil som beskriver ett formulärs layout och kontroller i VB6 och tidigare (klartext).
- FormFlow Form - Elektroniskt formulärdokument skapat av den äldre programvaran JetForm/FormFlow.
- Adobe FrameMaker (legacy) - Äldre FrameMaker-installationer använde .frm för vissa formulär-/mallresurser.
Program som öppnar FRM-filer
Tekniska detaljer
djup specifikation| Filstruktur | Proprietär little-endian binär blob; ingen komprimering eller kryptering |
| Magiska byte | 0xFE 0x01 vid offset 0 (versionsberoende binärt huvud; ingen stabil ASCII-signatur) |
| Innehåll | Kolumndefinitioner (namn, typer, längder, standardvärden), metadata för index/nycklar och tabellalternativ - endast schema, aldrig raddata |
| Typisk filstorlek | 1 KB - 50 KB per tabell; växer med antal kolumner och index |
| MIME-typ | application/octet-stream |
| En fil per tabell | Varje tabell får sin egen .frm-fil döpt efter tabellen, lagrad i schemats underkatalog i MySQL-datakatalogen |
| MyISAM-följeslagare | .MYD (raddata) och .MYI (indexdata) - alla tre krävs för full åtkomst till MyISAM-tabeller |
| InnoDB-följeslagare | .ibd-tabellutrymmesfil - .frm höll schemat medan .ibd höll data och index |
| Stöd för motorer | Skrevs av alla lagringsmotorer i MySQL 3.x - 5.7: MyISAM, InnoDB, MEMORY, CSV, ARCHIVE med flera |
| Borttagen i | MySQL 8.0 (december 2018): metadata flyttades till InnoDBs transaktionella datakatalog; inga .frm-filer skapas eller läses |
| Används fortfarande av | MariaDB fortsatte att generera .frm-filer efter uppdelningen från MySQL 8.0 |
| Återställningsverktyg | mysqlfrm (MySQL Utilities) läser en fristående .frm för att rekonstruera CREATE TABLE DDL-satsen |
| Utvecklare | MySQL AB (ursprunglig); Oracle Corporation (sedan uppköpet 2010) |
| Operativsystem | Plattformsoberoende: Linux, Windows, macOS, FreeBSD - överallt där MySQL eller MariaDB kördes |
| Släppt | 1995 (MySQL 1.0, used by ISAM/MyISAM/InnoDB through MySQL 5.7) |
| Senaste version | Last used in MySQL 5.7 / MariaDB; removed from MySQL 8.0 (December 2018) |
| Specifikation | dev.mysql.com |
FRM-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om FRM-filer.
Vanliga frågor
Hur öppnar jag en .frm-fil?
SHOW CREATE TABLE. Om du öppnar den råa binärfilen i en textredigerare visas bara skräptecken.Kan jag återställa min data från bara en .frm-fil?
Hur får jag ut CREATE TABLE-satsen från en .frm?
SHOW CREATE TABLE.Varför har inte MySQL 8.0 .frm-filer?
Jag kopierade .frm men får «Table doesn't exist» - varför?
mysqlfrm för att läsa enbart strukturen.Vilka program öppnar .frm förutom MySQL?
mysqlfrm läser den utan en server. Det finns ingen allmän «visare» - det är ett serverinternt format.