Qu'est-ce que le format de fichier FRM ?
Un fichier .frm est un fichier de définition de table MySQL qui stocke des informations sur la structure et la disposition d'une seule table de base de données. Un fichier .frm est créé pour chaque table, et le nom de la table est utilisé pour le nom du fichier .frm - ainsi, une table nommée orders produit orders.frm à l'intérieur du répertoire de données MySQL.
Le format .frm enregistre uniquement le schéma de la table : noms de colonnes, types de données, longueurs, valeurs par défaut et métadonnées d'index/clé. Il ne contient jamais de données de ligne. Pour les tables MyISAM, les données réelles résident dans un fichier .MYD compagnon (avec les index dans un fichier .MYI) ; MySQL nécessitait les trois fichiers ensemble pour accéder pleinement à une table MyISAM. Les tables InnoDB associaient leur .frm à un fichier tablespace .IBD séparé à la place.
Le fichier est un bloc binaire propriétaire en « little-endian » commençant par les octets magiques 0xFE 0x01. Il a été introduit avec MySQL 1.0 en 1995 et utilisé par tous les moteurs de stockage - MyISAM comme InnoDB - jusqu'à MySQL 5.7 et MariaDB. MySQL 8.0 (décembre 2018) a entièrement supprimé les fichiers .frm, déplaçant les métadonnées de table dans le dictionnaire de données transactionnel d'InnoDB. MariaDB a continué à utiliser les fichiers .frm après cette séparation.
Lorsque les données de ligne sont perdues ou corrompues, un fichier .frm survivant peut être inspecté avec l'utilitaire de diagnostic mysqlfrm pour reconstruire l'instruction CREATE TABLE et récupérer la disposition des colonnes.
Sécurité et sûreté
RISQUE : LOWUn fichier .frm est une métadonnée de table binaire passive - il ne contient aucun code exécutable et peut être manipulé en toute sécurité. Les risques pratiques concernent la récupération de données, pas les logiciels malveillants : un .frm restauré dans la mauvaise version de MySQL peut échouer ou corrompre le dictionnaire, et un .frm seul sans son .MYD/.ibd ne peut pas restituer vos lignes. Travaillez toujours sur des copies, respectez la version originale du serveur et conservez les fichiers de données compagnons ensemble.
Détails du format
en bref- Fichier de formulaire Visual Basic - Fichier source décrivant la disposition et les contrôles d'un formulaire dans VB6 et versions antérieures (texte brut).
- Formulaire FormFlow - Document de formulaire électronique créé par l'ancien logiciel JetForm/FormFlow.
- Adobe FrameMaker (hérité) - Les anciennes installations de FrameMaker utilisaient .frm pour certaines ressources de formulaires/modèles.
Programmes qui ouvrent les fichiers FRM
Détails techniques
spécifications approfondies| Structure du fichier | Bloc binaire propriétaire little-endian ; pas de compression ni de chiffrement |
| Octets magiques | 0xFE 0x01 à l'offset 0 (en-tête binaire dépendant de la version ; pas de signature ASCII stable) |
| Contenu | Définitions de colonnes (noms, types, longueurs, valeurs par défaut), métadonnées d'index/clé et options de table - schéma uniquement, jamais de données de ligne |
| Taille de fichier typique | 1 Ko - 50 Ko par table ; augmente avec le nombre de colonnes et d'index |
| Type MIME | application/octet-stream |
| Un fichier par table | Chaque table possède son propre fichier .frm nommé d'après la table, stocké dans le sous-répertoire du schéma du répertoire de données MySQL |
| Compagnons MyISAM | .MYD (données de ligne) et .MYI (données d'index) - tous trois requis pour un accès complet aux tables MyISAM |
| Compagnon InnoDB | Fichier tablespace .ibd - le .frm contenait le schéma tandis que le .ibd contenait les données et les index |
| Couverture des moteurs | Écrit par tous les moteurs de stockage dans MySQL 3.x - 5.7 : MyISAM, InnoDB, MEMORY, CSV, ARCHIVE, et autres |
| Supprimé dans | MySQL 8.0 (décembre 2018) : les métadonnées ont été déplacées dans le dictionnaire de données transactionnel InnoDB ; aucun fichier .frm n'est créé ou lu |
| Toujours utilisé par | MariaDB a continué à générer des fichiers .frm après la séparation de MySQL 8.0 |
| Utilitaire de récupération | mysqlfrm (MySQL Utilities) lit un .frm autonome pour reconstruire l'instruction DDL CREATE TABLE |
| Développeur | MySQL AB (original) ; Oracle Corporation (depuis l'acquisition de 2010) |
| Systèmes d'exploitation | Multiplateforme : Linux, Windows, macOS, FreeBSD - partout où MySQL ou MariaDB fonctionnaient |
| Publié | 1995 (MySQL 1.0, used by ISAM/MyISAM/InnoDB through MySQL 5.7) |
| Dernière version | Last used in MySQL 5.7 / MariaDB; removed from MySQL 8.0 (December 2018) |
| Spécification | dev.mysql.com |
Conversions FRM
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers FRM.