---
title: "Migrer une base MariaDB vers MySQL"
description: "Migrez une base MariaDB vers MySQL : convertissez son dump en script avec les mêmes tables, clés, séquences et données, et un rapport de chaque changement."
canonical: https://intosql.com/fr/mariadb-en-mysql
last_updated: 2026-10-15
---

# Migrer une base MariaDB vers MySQL

Déposez un dump de mariadb-dump, mysqldump, phpMyAdmin ou Adminer, en .sql ou .sql.gz, et téléchargez un script MySQL avec les mêmes tables, clés, index et données. Chaque valeur que MySQL ne peut pas contenir telle quelle, et chaque objet qu'il ne reprend pas, est listé dans le rapport.

[Guide de migration de MariaDB vers MySQL](https://intosql.com/docs/migrations/mariadb-to-mysql)

[Types de données de MariaDB vers MySQL](https://intosql.com/docs/types/mariadb-to-mysql)

## Ce qui change de MariaDB à MySQL

Chaque ligne est une règle appliquée par le convertisseur, avec la ligne de rapport qu'il écrit quand la règle change quelque chose dans vos données.

| Dans MariaDB | Dans MySQL | Ligne du rapport |
| --- | --- | --- |
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (utf8mb4_bin pour les binaires) | `collation_replaced` |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | conservé |  |
| TIME | TIME, durées comprises |  |
| TINYINT(1), BOOL | TINYINT(1) |  |
| UNSIGNED and ZEROFILL | conservé |  |
| ENUM and SET, the '' error value included | conservé |  |
| JSON | JSON |  |
| NUL bytes in text | conservé |  |
| AUTO_INCREMENT | AUTO_INCREMENT avec le compteur de la table |  |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | un index sur la colonne et un seul compteur pour la table | `myisam_group_autoincrement` |
| ON UPDATE CURRENT_TIMESTAMP | conservé |  |
| generated columns | VIRTUAL ou STORED comme dans la source |  |
| generated columns with functions IntoSQL doesn't read | une colonne simple | `generated_not_translated` |
| INVISIBLE columns | colonnes ordinaires | `invisible_column` |
| CHECK constraints | conservées (MySQL 5.7 les analyse et les ignore) |  |
| CHECK constraints with functions IntoSQL doesn't read | non créée | `check_skipped` |
| CHECK ... NOT ENFORCED | non créée | `check_not_enforced` |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | aucune valeur par défaut | `default_not_translated` |
| functional indexes, KEY ((expr)) | non créé | `index_skipped` |
| keys and indexes on a prefix, c(20) | conservé |  |
| FULLTEXT indexes | conservé |  |
| SPATIAL indexes | conservé |  |
| foreign keys | conservées, chargées avec FOREIGN_KEY_CHECKS=0 |  |
| GEOMETRY, POINT, POLYGON... | conservé, avec le SRID de chaque valeur |  |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36) | `type_replaced` |
| BINARY, VARBINARY, BLOB | conservé |  |
| PARTITION BY | une seule table | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | une table avec les lignes actuelles | `system_versioning_dropped` |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDB | `engine_dropped` |
| CREATE SEQUENCE (MariaDB) | non créée | `sequence_not_converted` |
| views, triggers, procedures, functions and events | listés dans le rapport | `not_converted_objects` |
| NOT NULL columns with values that become NULL | NOT NULL retiré | `not_null_relaxed` |
| text that isn't valid in its character set | les octets invalides deviennent le caractère de remplacement | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copié tel quel | `mojibake_suspected` |
| dumps without CREATE TABLE | types déduits des valeurs | `no_schema` |
| geometries in a dump without CREATE TABLE | GEOMETRY |  |
| SET NAMES utf8 from utf8mb4 tables | converti, avec un avertissement | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | lu comme Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | lu comme UTF-8, avec un avertissement | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | évaluées |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | la valeur par défaut de la colonne | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | lignes simples | `replace_as_insert` |
| types IntoSQL doesn't know | LONGBLOB | `unknown_type` |
| values that don't fit their column | NULL | `invalid_value_null` |
| unreadable geometries | NULL | `bad_geometry` |
| TIMESTAMP | conservé, chargé dans le fuseau horaire indiqué par le dump |  |
| VECTOR(n) (MariaDB 11.7+) | json avec les flottants en tableau | `type_replaced` |

## Charger le script dans MySQL

Le script crée les tables, copie les lignes, puis ajoute les clés, les index et les clés étrangères ; il se charge donc vite et s'arrête à la première erreur.

```shell
mysql --default-character-set=utf8mb4 mydb < mariadb.mysql.sql
```

Les clés étrangères sont créées comme le dump les déclare, avec FOREIGN_KEY_CHECKS=0 pendant le chargement des lignes ; une ligne qui pointe vers une ligne absente n'arrête donc pas le chargement.

Pour un gros dump, exécutez le client sur la machine du serveur, et augmentez max_allowed_packet si une seule ligne est très grande.

IntoSQL Pro charge le fichier directement dans MySQL depuis l'application de bureau ou la ligne de commande, sans écrire de script.

## Faire le dump MariaDB pour un meilleur résultat

Le convertisseur lit ce que contient le dump. Ces options y gardent davantage de vos données :

- --default-character-set=utf8mb4 garde les emoji et autres caractères sur 4 octets, qu'un dump utf8mb3 perd avant que le convertisseur ne le voie.
- --hex-blob écrit les colonnes binaires et les valeurs VECTOR en hexadécimal, ce qui résiste aux copies entre systèmes.
- --routines --triggers --events ajoutent ces objets au dump, pour que le rapport puisse les lister.

## Ce qui n'est pas converti

Les vues, déclencheurs, procédures stockées, fonctions et événements sont écrits dans le langage propre à MariaDB. Ils sont listés par nom dans le rapport, jamais supprimés en silence, pour que vous puissiez les réécrire pour MySQL.

## Questions sur MariaDB vers MySQL

### Mon dump est-il envoyé ?

Non. Le convertisseur s'exécute dans votre navigateur et lit le dump depuis votre disque par morceaux ; il ne quitte donc jamais votre ordinateur. L'application de bureau et la ligne de commande convertissent aussi sur votre ordinateur.

### Quelle taille peut avoir le dump ?

Le convertisseur ne garde jamais tout le dump en mémoire : il lit le fichier deux fois, par plages, et écrit le script au fur et à mesure. Les dumps de plusieurs gigaoctets se convertissent dans le navigateur, dans l'application de bureau et avec la ligne de commande.

### De quelles versions de MariaDB le dump peut-il venir ?

Les dumps de mariadb-dump et mysqldump sur MariaDB 10.3 à 12, avec un INSERT par table ou un par ligne. Chaque dump de test vient de MariaDB 10.11, 11.4 et 11.8 et est comparé à sa source cellule par cellule.

### Les colonnes UUID, INET6, JSON et VECTOR sont-elles conservées ?

UUID devient char(36), INET4 et INET6 varchar, JSON json, et VECTOR un tableau json de ses flottants, car MySQL 5.7 et 8.0 n'ont pas ces types.

### Les valeurs AUTO_INCREMENT et les séquences sont-elles conservées ?

AUTO_INCREMENT reste tel quel et reprend là où le dump l'a laissé. MySQL n'a pas de séquences ; elles sont donc signalées dans le rapport, ainsi que les valeurs par défaut qui y puisent.

### Et les procédures stockées et les déclencheurs ?

Ils sont listés par nom dans le rapport et ne sont pas convertis, pour que vous puissiez vérifier chacun avec MySQL avant de le recréer.

### Sur quelles versions de MySQL le script se charge-t-il ?

MySQL 5.7 et versions ultérieures. Chaque dump de test se charge sur 5.7 et 9, et s'arrête à la première erreur en cas de problème.

## Depuis MariaDB

- [MariaDB vers PostgreSQL](https://intosql.com/fr/mariadb-en-postgresql)
- [MariaDB vers MariaDB](https://intosql.com/fr/mariadb-en-mariadb)
- [MariaDB vers SQLite](https://intosql.com/fr/mariadb-en-sqlite)
- [MariaDB vers SQL Server](https://intosql.com/fr/mariadb-en-sql-server)
- [MariaDB vers Oracle](https://intosql.com/fr/mariadb-en-oracle)

## Vers MySQL

- [MySQL vers MySQL](https://intosql.com/fr/mysql-en-mysql)
- [PostgreSQL vers MySQL](https://intosql.com/fr/postgresql-en-mysql)
- [SQL Server vers MySQL](https://intosql.com/fr/sql-server-en-mysql)
- [SQLite vers MySQL](https://intosql.com/fr/sqlite-en-mysql)
- [Oracle vers MySQL](https://intosql.com/fr/oracle-en-mysql)

## Guide et toutes les paires

- [MySQL vers MariaDB](https://intosql.com/fr/mysql-en-mariadb)
- [Guide de migration de MariaDB vers MySQL](https://intosql.com/docs/migrations/mariadb-to-mysql)
- [Types de données de MariaDB vers MySQL](https://intosql.com/docs/types/mariadb-to-mysql)
- [Toutes les paires de bases de données](https://intosql.com/fr/migration-de-base-de-donnees)
