Aller au contenu
Accueil IntoSQL

Passer un dump MySQL vers un MySQL plus ancien ou plus récent

Déposez un dump de mysqldump, mysqlpump, phpMyAdmin ou Adminer, de MySQL 5.5 à 9, en .sql ou .sql.gz, et téléchargez un script qui se charge sur MySQL 5.7 et suivants. Les collations que seuls MySQL 8 et suivants connaissent, comme utf8mb4_0900_ai_ci, deviennent utf8mb4_unicode_520_ci, et chaque changement figure dans le rapport.

Votre fichier
sqlshop_2024.sqlFichier d'exemple, 5,1 ko
Votre base de données

18 lignes converties, 2 corrections, aucune rejetée

Afficher

Tables de shop_2024.sqlDump MySQL 8.0.46 · écrit par mysqldump · utf8mb4

  • customers8 lignes1
    7 colonnes
    idint unsigned not null
    namevarchar(100) not null
    emailvarchar(150) not null
    countrychar(2) not null
    is_activetinyint(1) not null
    signed_update not null
    created_attimestamp not null
  • orders10 lignes1
    9 colonnes
    idint unsigned not null
    customer_idint unsigned not null
    statusenum('pending','paid','shipped','cancelled') not null
    totaldecimal(10,2) not null
    itemssmallint unsigned not null
    ordered_atdatetime not null
    shipped_atdatetime
    notevarchar(255)
    updated_attimestamp not null
-- Written by IntoSQL from a MySQL dump. Load it with: mysql --default-character-set=utf8mb4 <database> < <file>
SET NAMES utf8mb4;
SET TIME_ZONE = '+00:00';
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO,ALLOW_INVALID_DATES';

CREATE TABLE `customers` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `email` varchar(150) NOT NULL,
  `country` char(2) NOT NULL DEFAULT 'US',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `signed_up` date NOT NULL DEFAULT '0000-00-00',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci COMMENT='People who bought at least once';

CREATE TABLE `orders` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int unsigned NOT NULL,
  `status` enum('pending','paid','shipped','cancelled') NOT NULL DEFAULT 'pending',
  `total` decimal(10,2) NOT NULL,
  `items` smallint unsigned NOT NULL DEFAULT 1,
  `ordered_at` datetime NOT NULL,
  `shipped_at` datetime DEFAULT NULL,
  `note` varchar(255) DEFAULT NULL,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_customer` (`customer_id`),
  KEY `idx_status_date` (`status`,`ordered_at`),
  CONSTRAINT `fk_orders_customer` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (1,'Ana Martínez','ana@example.com','MX',1,'2023-01-15','2023-01-15 10:24:00'),(2,'Zoë Müller','zoe@example.de','DE',1,'2023-02-03','2023-02-03 08:11:42'),(3,'José Peña','jose@example.es','ES',0,'2023-03-21','2023-03-21 19:05:17'),(4,'李雷','lilei@example.cn','CN',1,'2023-05-09','2023-05-09 02:40:00'),(5,'Noah O\'Brien','noah@example.ie','IE',1,'0000-00-00','2023-06-30 14:00:00'),(6,'Amélie Laurent','amelie@example.fr','FR',1,'2024-01-02','2024-01-02 09:30:00'),(7,'Ravi Patel','ravi@example.in','IN',0,'2024-02-29','2024-02-29 23:59:59'),(8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'2024-04-12','2024-04-12 12:12:12');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`updated_at`) VALUES (1,1,'shipped',129.90,3,'2024-03-01 10:00:00','2024-03-02 16:30:00',NULL,'2024-03-02 16:30:00'),(2,2,'paid',54.00,1,'2024-03-02 11:15:00',NULL,'Gift wrap 🎁','2024-03-02 11:20:00'),(3,1,'cancelled',12.50,1,'2024-03-03 09:45:00',NULL,'Customer changed their mind','2024-03-03 10:00:00'),(4,4,'shipped',980.00,12,'2024-03-05 02:10:00','2024-03-07 08:00:00','请小心轻放','2024-03-07 08:00:00'),(5,5,'pending',45.75,2,'2024-03-08 17:20:00',NULL,'Leave at the door; ring twice','2024-03-08 17:20:00'),(6,6,'shipped',310.40,5,'2024-03-10 13:00:00','2024-03-11 09:00:00','Fragile: \"glass\"','2024-03-11 09:00:00'),(7,8,'paid',76.20,2,'2024-03-11 18:45:00',NULL,NULL,'2024-03-11 18:46:00'),(8,2,'',19.99,1,'2024-03-12 08:00:00',NULL,'Status lost in an old import','2024-03-12 08:00:00'),(9,3,'shipped',64.00,2,'2024-03-14 15:30:00','0000-00-00 00:00:00','Shipping date never recorded','2024-03-15 10:00:00'),(10,7,'paid',1499.00,1,'2024-03-15 21:05:00',NULL,'C:\\Users\\ravi\\invoice.pdf','2024-03-15 21:05:00');

SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;

Corrections

  1. customers utilise la collation utf8mb4_0900_ai_ci, que MySQL n'a pas, donc elle utilise utf8mb4_unicode_520_ci ; le texte peut se trier et se comparer un peu différemment.
  2. orders utilise la collation utf8mb4_0900_ai_ci, que MySQL n'a pas, donc elle utilise utf8mb4_unicode_520_ci ; le texte peut se trier et se comparer un peu différemment.

Votre fichier est converti sur cet ordinateur et n'est jamais envoyé.

Autres exemples :

Ce qui change entre le fichier et le script

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.

  • utf8mb4_0900_* and utf8mb4_uca1400_* collations

    utf8mb4_unicode_520_ci (utf8mb4_bin pour les binaires)

    MySQL ne connaît pas les collations plus récentes, l'erreur qui empêche la plupart des dumps MySQL 8 de se charger ailleurs. unicode_520 suit au plus près les mêmes règles Unicode.

    Ligne du rapport: collation_replaced

  • zero, partial or impossible dates (0000-00-00, 2024-02-30)

    conservé

    Le script se charge avec ALLOW_INVALID_DATES et sans NO_ZERO_DATE, donc MySQL garde les mêmes valeurs que la source.

  • TIME

    TIME, durées comprises

    Le même type, avec la même plage.

  • TINYINT(1), BOOL

    TINYINT(1)

    Le même type avec les mêmes valeurs.

  • UNSIGNED and ZEROFILL

    conservé

    Les mêmes types.

  • ENUM and SET, the '' error value included

    conservé

    Les mêmes types ; le script se charge sans mode strict, donc la valeur d'erreur se charge telle quelle.

  • JSON

    JSON

    MySQL lit le même texte JSON.

  • NUL bytes in text

    conservé

    La valeur est copiée avec le même échappement que la source.

  • AUTO_INCREMENT

    AUTO_INCREMENT avec le compteur de la table

    Le compteur reprend là où la source l'a laissé, y compris les compteurs par groupe de MyISAM.

  • 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

    InnoDB ne compte une colonne que si elle est en tête d'un index, et une seule fois pour toute la table.

    Ligne du rapport: myisam_group_autoincrement

  • ON UPDATE CURRENT_TIMESTAMP

    conservé

    La même clause, avec les fractions de seconde de la colonne.

  • generated columns

    VIRTUAL ou STORED comme dans la source

    La même formule, traduite terme à terme.

  • generated columns with functions IntoSQL doesn't read

    une colonne simple

    Une formule qu'IntoSQL ne sait pas lire laisse une colonne simple et une ligne dans le rapport.

    Ligne du rapport: generated_not_translated

  • INVISIBLE columns

    colonnes ordinaires

    MySQL a des colonnes invisibles depuis 8.0.23, MariaDB depuis 10.3.

    Ligne du rapport: invisible_column

  • CHECK constraints

    conservées (MySQL 5.7 les analyse et les ignore)

    Les mêmes contraintes CHECK, traduites terme à terme.

  • CHECK constraints with functions IntoSQL doesn't read

    non créée

    Une contrainte CHECK qu'IntoSQL ne sait pas lire est omise et signalée.

    Ligne du rapport: check_skipped

  • CHECK ... NOT ENFORCED

    non créée

    MySQL 5.7 et MariaDB ne peuvent pas garder une contrainte CHECK sans l'appliquer, et les lignes peuvent l'enfreindre.

    Ligne du rapport: check_not_enforced

  • expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY

    aucune valeur par défaut

    MySQL les accepte depuis 8.0.13 ; le script se charge sur 5.7, donc elles sont omises et signalées. MariaDB les accepte.

    Ligne du rapport: default_not_translated

  • functional indexes, KEY ((expr))

    non créé

    MySQL indexe des expressions depuis 8.0.13 et MariaDB pas du tout ; une colonne générée avec un index fait la même chose.

    Ligne du rapport: index_skipped

  • keys and indexes on a prefix, c(20)

    conservé

    Le même index.

  • FULLTEXT indexes

    conservé

    Le même index ; MATCH ... AGAINST fonctionne comme avant.

  • SPATIAL indexes

    conservé

    Le même index.

  • foreign keys

    conservées, chargées avec FOREIGN_KEY_CHECKS=0

    Les mêmes clés ; les lignes se chargent comme depuis le dump source.

  • GEOMETRY, POINT, POLYGON...

    conservé, avec le SRID de chaque valeur

    Les octets de géométrie propres au serveur sont copiés, SRID compris.

  • INET4, INET6, UUID (MariaDB)

    varchar(15), varchar(39), char(36)

    MySQL n'a pas ces types ; le texte que MariaDB écrit pour eux est conservé.

    Ligne du rapport: type_replaced

  • BINARY, VARBINARY, BLOB

    conservé

    Les octets restent des octets.

  • PARTITION BY

    une seule table

    Les lignes sont les mêmes ; partitionnez à nouveau la table si besoin.

    Ligne du rapport: partitions_dropped

  • WITH SYSTEM VERSIONING (MariaDB)

    une table avec les lignes actuelles

    Un dump ne contient que les lignes actuelles ; MySQL n'a pas de versionnage système.

    Ligne du rapport: system_versioning_dropped

  • Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)

    InnoDB

    MySQL n'a aucun de ces moteurs. Tous les autres moteurs sont conservés.

    Ligne du rapport: engine_dropped

  • CREATE SEQUENCE (MariaDB)

    non créée

    MySQL n'a pas de séquences.

    Ligne du rapport: sequence_not_converted

  • views, triggers, procedures, functions and events

    listés dans le rapport

    Ils sont listés pour que vous les recréiez ; leur code nomme souvent son definer et des fonctions du serveur.

    Ligne du rapport: not_converted_objects

  • NOT NULL columns with values that become NULL

    NOT NULL retiré

    Une colonne dont des valeurs ont dû devenir NULL ne peut pas garder NOT NULL, sinon le chargement s'arrêterait.

    Ligne du rapport: not_null_relaxed

  • text that isn't valid in its character set

    les octets invalides deviennent le caractère de remplacement

    Le script est en UTF-8 ; des octets qui ne le sont pas arrêteraient le chargement.

    Ligne du rapport: invalid_utf8_replaced

  • text decoded twice (ñ)

    copié tel quel

    Le dump contient exactement ces caractères, ils sont donc copiés ; le rapport les signale.

    Ligne du rapport: mojibake_suspected

  • dumps without CREATE TABLE

    types déduits des valeurs

    Un dump fait avec --no-create-info ne contient que des lignes, donc les types viennent des valeurs.

    Ligne du rapport: no_schema

  • geometries in a dump without CREATE TABLE

    GEOMETRY

    Le format de géométrie de MySQL est reconnu à partir des valeurs.

  • SET NAMES utf8 from utf8mb4 tables

    converti, avec un avertissement

    Le mysqldump de MySQL 5.x écrit par défaut en utf8 sur 3 octets et remplace chaque emoji par un point d'interrogation avant qu'un convertisseur ne voie le fichier.

    Ligne du rapport: dump_lost_four_byte_chars

  • dumps without SET NAMES whose text isn't UTF-8

    lu comme Latin-1 (Windows-1252)

    Le latin1 de MySQL est le Windows-1252, l'encodage habituel de ces dumps.

    Ligne du rapport: charset_guessed

  • sjis, cp932, gbk, big5 dumps

    lu comme UTF-8, avec un avertissement

    Ces encodages ne sont pas encore décodés.

    Ligne du rapport: unsupported_charset

  • UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows

    évaluées

    Certains outils de dump écrivent les valeurs sous forme de ces appels ; ils sont lus comme les valeurs qu'ils produisent.

  • other expressions in rows

    NULL

    Un convertisseur qui n'exécute pas de base de données ne peut pas les évaluer.

    Ligne du rapport: expression_value

  • DEFAULT in VALUES

    la valeur par défaut de la colonne

    Une valeur par défaut littérale est copiée dans la ligne.

    Ligne du rapport: default_keyword_filled

  • DEFAULT in VALUES without a literal default

    NULL

    Il n'y a aucune valeur à copier.

    Ligne du rapport: default_keyword_null

  • REPLACE and INSERT IGNORE

    lignes simples

    Un dump a une ligne par clé, donc les lignes sont les mêmes.

    Ligne du rapport: replace_as_insert

  • types IntoSQL doesn't know

    LONGBLOB

    Un blob contient les octets de n'importe quelle valeur ; changez le type après le chargement.

    Ligne du rapport: unknown_type

  • values that don't fit their column

    NULL

    Un dump endommagé ou écrit à la main peut contenir des valeurs que sa colonne n'accepte pas ; elles deviennent NULL pour que le reste se charge.

    Ligne du rapport: invalid_value_null

  • unreadable geometries

    NULL

    Des octets qui ne forment pas une géométrie ne peuvent pas être stockés comme telle.

    Ligne du rapport: bad_geometry

  • TIMESTAMP

    conservé, chargé dans le fuseau horaire indiqué par le dump

    Le script définit le même fuseau horaire que le dump, donc chaque instant reste le même.

  • VECTOR(n) (MariaDB 11.7+)

    json avec les flottants en tableau

    MySQL 5.7 et 8.0 n'ont pas de type vector ; un tableau JSON garde chaque flottant dans toutes les versions.

    Ligne du rapport: type_replaced

Dans le fichierDans le scriptLigne du rapport
utf8mb4_0900_* and utf8mb4_uca1400_* collationsutf8mb4_unicode_520_ci (utf8mb4_bin pour les binaires)MySQL ne connaît pas les collations plus récentes, l'erreur qui empêche la plupart des dumps MySQL 8 de se charger ailleurs. unicode_520 suit au plus près les mêmes règles Unicode.collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)conservéLe script se charge avec ALLOW_INVALID_DATES et sans NO_ZERO_DATE, donc MySQL garde les mêmes valeurs que la source.
TIMETIME, durées comprisesLe même type, avec la même plage.
TINYINT(1), BOOLTINYINT(1)Le même type avec les mêmes valeurs.
UNSIGNED and ZEROFILLconservéLes mêmes types.
ENUM and SET, the '' error value includedconservéLes mêmes types ; le script se charge sans mode strict, donc la valeur d'erreur se charge telle quelle.
JSONJSONMySQL lit le même texte JSON.
NUL bytes in textconservéLa valeur est copiée avec le même échappement que la source.
AUTO_INCREMENTAUTO_INCREMENT avec le compteur de la tableLe compteur reprend là où la source l'a laissé, y compris les compteurs par groupe de MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dumpun index sur la colonne et un seul compteur pour la tableInnoDB ne compte une colonne que si elle est en tête d'un index, et une seule fois pour toute la table.myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMPconservéLa même clause, avec les fractions de seconde de la colonne.
generated columnsVIRTUAL ou STORED comme dans la sourceLa même formule, traduite terme à terme.
generated columns with functions IntoSQL doesn't readune colonne simpleUne formule qu'IntoSQL ne sait pas lire laisse une colonne simple et une ligne dans le rapport.generated_not_translated
INVISIBLE columnscolonnes ordinairesMySQL a des colonnes invisibles depuis 8.0.23, MariaDB depuis 10.3.invisible_column
CHECK constraintsconservées (MySQL 5.7 les analyse et les ignore)Les mêmes contraintes CHECK, traduites terme à terme.
CHECK constraints with functions IntoSQL doesn't readnon crééeUne contrainte CHECK qu'IntoSQL ne sait pas lire est omise et signalée.check_skipped
CHECK ... NOT ENFORCEDnon crééeMySQL 5.7 et MariaDB ne peuvent pas garder une contrainte CHECK sans l'appliquer, et les lignes peuvent l'enfreindre.check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRYaucune valeur par défautMySQL les accepte depuis 8.0.13 ; le script se charge sur 5.7, donc elles sont omises et signalées. MariaDB les accepte.default_not_translated
functional indexes, KEY ((expr))non crééMySQL indexe des expressions depuis 8.0.13 et MariaDB pas du tout ; une colonne générée avec un index fait la même chose.index_skipped
keys and indexes on a prefix, c(20)conservéLe même index.
FULLTEXT indexesconservéLe même index ; MATCH ... AGAINST fonctionne comme avant.
SPATIAL indexesconservéLe même index.
foreign keysconservées, chargées avec FOREIGN_KEY_CHECKS=0Les mêmes clés ; les lignes se chargent comme depuis le dump source.
GEOMETRY, POINT, POLYGON...conservé, avec le SRID de chaque valeurLes octets de géométrie propres au serveur sont copiés, SRID compris.
INET4, INET6, UUID (MariaDB)varchar(15), varchar(39), char(36)MySQL n'a pas ces types ; le texte que MariaDB écrit pour eux est conservé.type_replaced
BINARY, VARBINARY, BLOBconservéLes octets restent des octets.
PARTITION BYune seule tableLes lignes sont les mêmes ; partitionnez à nouveau la table si besoin.partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)une table avec les lignes actuellesUn dump ne contient que les lignes actuelles ; MySQL n'a pas de versionnage système.system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)InnoDBMySQL n'a aucun de ces moteurs. Tous les autres moteurs sont conservés.engine_dropped
CREATE SEQUENCE (MariaDB)non crééeMySQL n'a pas de séquences.sequence_not_converted
views, triggers, procedures, functions and eventslistés dans le rapportIls sont listés pour que vous les recréiez ; leur code nomme souvent son definer et des fonctions du serveur.not_converted_objects
NOT NULL columns with values that become NULLNOT NULL retiréUne colonne dont des valeurs ont dû devenir NULL ne peut pas garder NOT NULL, sinon le chargement s'arrêterait.not_null_relaxed
text that isn't valid in its character setles octets invalides deviennent le caractère de remplacementLe script est en UTF-8 ; des octets qui ne le sont pas arrêteraient le chargement.invalid_utf8_replaced
text decoded twice (ñ)copié tel quelLe dump contient exactement ces caractères, ils sont donc copiés ; le rapport les signale.mojibake_suspected
dumps without CREATE TABLEtypes déduits des valeursUn dump fait avec --no-create-info ne contient que des lignes, donc les types viennent des valeurs.no_schema
geometries in a dump without CREATE TABLEGEOMETRYLe format de géométrie de MySQL est reconnu à partir des valeurs.
SET NAMES utf8 from utf8mb4 tablesconverti, avec un avertissementLe mysqldump de MySQL 5.x écrit par défaut en utf8 sur 3 octets et remplace chaque emoji par un point d'interrogation avant qu'un convertisseur ne voie le fichier.dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8lu comme Latin-1 (Windows-1252)Le latin1 de MySQL est le Windows-1252, l'encodage habituel de ces dumps.charset_guessed
sjis, cp932, gbk, big5 dumpslu comme UTF-8, avec un avertissementCes encodages ne sont pas encore décodés.unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rowsévaluéesCertains outils de dump écrivent les valeurs sous forme de ces appels ; ils sont lus comme les valeurs qu'ils produisent.
other expressions in rowsNULLUn convertisseur qui n'exécute pas de base de données ne peut pas les évaluer.expression_value
DEFAULT in VALUESla valeur par défaut de la colonneUne valeur par défaut littérale est copiée dans la ligne.default_keyword_filled
DEFAULT in VALUES without a literal defaultNULLIl n'y a aucune valeur à copier.default_keyword_null
REPLACE and INSERT IGNORElignes simplesUn dump a une ligne par clé, donc les lignes sont les mêmes.replace_as_insert
types IntoSQL doesn't knowLONGBLOBUn blob contient les octets de n'importe quelle valeur ; changez le type après le chargement.unknown_type
values that don't fit their columnNULLUn dump endommagé ou écrit à la main peut contenir des valeurs que sa colonne n'accepte pas ; elles deviennent NULL pour que le reste se charge.invalid_value_null
unreadable geometriesNULLDes octets qui ne forment pas une géométrie ne peuvent pas être stockés comme telle.bad_geometry
TIMESTAMPconservé, chargé dans le fuseau horaire indiqué par le dumpLe script définit le même fuseau horaire que le dump, donc chaque instant reste le même.
VECTOR(n) (MariaDB 11.7+)json avec les flottants en tableauMySQL 5.7 et 8.0 n'ont pas de type vector ; un tableau JSON garde chaque flottant dans toutes les versions.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.

mysql --default-character-set=utf8mb4 mydb < mysql.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 MySQL 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 utf8 perd avant que le convertisseur ne le voie.
  • --hex-blob écrit les colonnes binaires 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, triggers, procédures, fonctions et autres objets écrits dans le propre langage de MySQL sont listés par nom dans le rapport, jamais supprimés en silence, pour que vous vérifiiez chacun face à la version de MySQL cible avant de le recréer.

Questions sur le passage de MySQL d'une version à l'autre

Pas de réponse ici ? Écrivez-nous depuis la page de contact, une personne vous répond. Page de contact

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.

Lit-il les dumps MariaDB ?

Oui. Les dumps de mariadb-dump et de MariaDB 10.3 à 12 se convertissent de la même façon, y compris les colonnes INET6, INET4 et UUID de MariaDB.

Que deviennent les dates 0000-00-00 ?

MySQL les conserve : le script définit un mode SQL qui accepte les dates zéro et impossibles pendant le chargement, donc elles arrivent telles quelles.

Les valeurs AUTO_INCREMENT sont-elles conservées ?

Oui. AUTO_INCREMENT reste tel quel, et le compteur de la table reprend là où le dump l'a laissé.

TINYINT(1) devient-il boolean ?

Elle reste en TINYINT(1), comme dans la source, donc chaque valeur garde son nombre.

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 vérifiiez chacun face à la version de MySQL cible avant de le recréer. ON UPDATE CURRENT_TIMESTAMP reste tel quel.

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

MySQL 5.7 et suivants. Chaque dump de test se charge sur 5.7 et 9, en s'arrêtant à la première erreur en cas de problème.