Hva er FRM-filformatet?
En .frm-fil er en MySQL-tabell-definisjonsfil som lagrer informasjon om strukturen og oppsettet til en enkelt databasetabell. Én .frm-fil opprettes for hver tabell, og tabellnavnet brukes som filnavn for .frm - så en tabell med navnet orders produserer orders.frm inne i MySQL-datamappen.
.frm-formatet registrerer kun tabellskjemaet: kolonnenavn, datatyper, lengder, standardverdier og metadata for indekser/nøkler. Den inneholder aldri raddata. For MyISAM-tabeller ligger de faktiske dataene i en tilhørende .MYD-fil (med indekser i en .MYI-fil); MySQL krevde alle tre filene sammen for å få full tilgang til en MyISAM-tabell. InnoDB-tabeller parret sin .frm med en separat .IBD-tabellplassfil i stedet.
Filen er en proprietær «little-endian» binær blob som starter med de magiske bytene 0xFE 0x01. Den ble introdusert med MySQL 1.0 i 1995 og brukt av alle lagringsmotorer - både MyISAM og InnoDB - frem til MySQL 5.7 og MariaDB. MySQL 8.0 (desember 2018) fjernet .frm-filer helt, og flyttet tabell-metadata inn i InnoDBs transaksjonelle datakatalog. MariaDB fortsatte å bruke .frm-filer etter dette skillet.
Når raddata går tapt eller blir korrupt, kan en overlevende .frm-fil inspiseres med diagnoseverktøyet mysqlfrm for å rekonstruere CREATE TABLE-setningen og gjenopprette kolonneoppsettet.
Sikkerhet og trygghet
RISIKO: LOWEn .frm-fil er passive binære tabell-metadata - den inneholder ingen kjørbar kode og er trygg å håndtere. De praktiske risikoene er knyttet til datagjenoppretting, ikke skadevare: en .frm som gjenopprettes i feil MySQL-versjon kan feile eller korrumpere katalogen, og en enslig .frm uten tilhørende .MYD/.ibd kan ikke returnere radene dine. Arbeid alltid på kopier, bruk samme serverversjon som originalen, og hold de tilhørende datafilene samlet.
Formatdetaljer
i et nøtteskall- Visual Basic Form-fil - Kildefil som beskriver et skjemaoppsett og kontroller i VB6 og tidligere (ren tekst).
- FormFlow Form - Elektronisk skjemadokument opprettet av den eldre JetForm/FormFlow-programvaren.
- Adobe FrameMaker (legacy) - Eldre FrameMaker-installasjoner brukte .frm for enkelte skjema-/malressurser.
Programmer som åpner FRM-filer
Tekniske detaljer
dyp spesifikasjon| Filstruktur | Proprietær little-endian binær blob; ingen komprimering eller kryptering |
| Magiske byte | 0xFE 0x01 ved posisjon 0 (versjonsavhengig binær header; ingen stabil ASCII-signatur) |
| Innhold | Kolonnedefinisjoner (navn, typer, lengder, standardverdier), metadata for indekser/nøkler og tabellvalg - kun skjema, aldri raddata |
| Typisk filstørrelse | 1 KB - 50 KB per tabell; vokser med antall kolonner og indekser |
| MIME-type | application/octet-stream |
| Én fil per tabell | Hver tabell får sin egen .frm-fil oppkalt etter tabellen, lagret i skjemaets undermappe i MySQL-datamappen |
| MyISAM-følgesvenner | .MYD (raddata) og .MYI (indeksdata) - alle tre kreves for full tilgang til MyISAM-tabeller |
| InnoDB-følgesvenn | .ibd-tabellplassfil - .frm holdt skjemaet mens .ibd holdt data og indekser |
| Støttede motorer | Skrevet av alle lagringsmotorer i MySQL 3.x - 5.7: MyISAM, InnoDB, MEMORY, CSV, ARCHIVE og andre |
| Fjernet i | MySQL 8.0 (desember 2018): metadata flyttet inn i InnoDBs transaksjonelle datakatalog; ingen .frm-filer opprettes eller leses |
| Fortsatt brukt av | MariaDB fortsatte å generere .frm-filer etter MySQL 8.0-skillet |
| Gjenopprettingsverktøy | mysqlfrm (MySQL Utilities) leser en frittstående .frm for å rekonstruere CREATE TABLE DDL-setningen |
| Utvikler | MySQL AB (opprinnelig); Oracle Corporation (siden oppkjøpet i 2010) |
| Operativsystemer | Plattformuavhengig: Linux, Windows, macOS, FreeBSD - overalt hvor MySQL eller MariaDB kjørte |
| Utgitt | 1995 (MySQL 1.0, used by ISAM/MyISAM/InnoDB through MySQL 5.7) |
| Siste versjon | Last used in MySQL 5.7 / MariaDB; removed from MySQL 8.0 (December 2018) |
| Spesifikasjon | dev.mysql.com |
FRM-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om FRM-filer.