Passer un dump MariaDB vers un MariaDB plus ancien ou plus récent
Déposez un dump de mariadb-dump, mysqldump, phpMyAdmin ou Adminer, en .sql ou .sql.gz, et téléchargez un script qui se charge sur MariaDB 10.11 et suivants. UUID, INET4, INET6, JSON et les séquences restent tels quels, VECTOR devient un tableau JSON de ses nombres pour les versions avant 11.7, et chaque changement figure dans le rapport.
18 lignes converties, aucune correction, aucune rejetée
Tables de shop_2024_mariadb.sqlDump MariaDB 11.8.9-MariaDB-ubu2404 · écrit par mariadb-dump · utf8mb4
customers8 lignes
8 colonnes id int(10) unsigned not null name varchar(100) not null email varchar(150) not null country char(2) not null is_active tinyint(1) not null signed_up date not null created_at timestamp not null last_ip inet6 orders10 lignes
12 colonnes id int(10) unsigned not null customer_id int(10) unsigned not null status enum('pending','paid','shipped','cancelled') not null total decimal(10,2) not null items smallint(5) unsigned not null ordered_at datetime not null shipped_at datetime note varchar(255) order_ref uuid not null invoice int(11) not null details json updated_at timestamp not null
-- Written by IntoSQL from a MySQL dump. Load it with: mariadb --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 SEQUENCE `invoice_numbers` START WITH 1000 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1;
SELECT SETVAL(`invoice_numbers`, 2000, 0);
CREATE TABLE `customers` (
`id` int(10) 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,
`last_ip` inet6 DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci COMMENT='People who bought at least once';
CREATE TABLE `orders` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`customer_id` int(10) unsigned NOT NULL,
`status` enum('pending','paid','shipped','cancelled') NOT NULL DEFAULT 'pending',
`total` decimal(10,2) NOT NULL,
`items` smallint(5) unsigned NOT NULL DEFAULT 1,
`ordered_at` datetime NOT NULL,
`shipped_at` datetime DEFAULT NULL,
`note` varchar(255) DEFAULT NULL,
`order_ref` uuid NOT NULL,
`invoice` int(11) NOT NULL DEFAULT (nextval(`invoice_numbers`)),
`details` json 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_uca1400_ai_ci;
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`,`last_ip`) VALUES (1,'Ana Martínez','ana@example.com','MX',1,'2023-01-15','2023-01-15 10:24:00','::ffff:203.0.113.7'),(2,'Zoë Müller','zoe@example.de','DE',1,'2023-02-03','2023-02-03 08:11:42','2001:db8::1'),(3,'José Peña','jose@example.es','ES',0,'2023-03-21','2023-03-21 19:05:17',NULL),(4,'李雷','lilei@example.cn','CN',1,'2023-05-09','2023-05-09 02:40:00','::ffff:198.51.100.23'),(5,'Noah O\'Brien','noah@example.ie','IE',1,'0000-00-00','2023-06-30 14:00:00',NULL),(6,'Amélie Laurent','amelie@example.fr','FR',1,'2024-01-02','2024-01-02 09:30:00','2001:db8:85a3::8a2e:370:7334'),(7,'Ravi Patel','ravi@example.in','IN',0,'2024-02-29','2024-02-29 23:59:59','::ffff:192.0.2.200'),(8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'2024-04-12','2024-04-12 12:12:12',NULL);
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`order_ref`,`invoice`,`details`,`updated_at`) VALUES (1,1,'shipped',129.90,3,'2024-03-01 10:00:00','2024-03-02 16:30:00',NULL,'0b7a4c2e-3f1d-4e8a-9c55-1a2b3c4d5e6f',1000,'{\"gift\": false}','2024-03-02 16:30:00'),(2,2,'paid',54.00,1,'2024-03-02 11:15:00',NULL,'Gift wrap 🎁','1c8b5d3f-4a2e-4f9b-8d66-2b3c4d5e6f70',1001,'{\"gift\": true, \"wrap\": \"red\"}','2024-03-02 11:20:00'),(3,1,'cancelled',12.50,1,'2024-03-03 09:45:00',NULL,'Customer changed their mind','2d9c6e4a-5b3f-4a0c-9e77-3c4d5e6f7081',1002,NULL,'2024-03-03 10:00:00'),(4,4,'shipped',980.00,12,'2024-03-05 02:10:00','2024-03-07 08:00:00','请小心轻放','3e0d7f5b-6c4a-4b1d-8f88-4d5e6f708192',1003,'{\"fragile\": true}','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','4f1e806c-7d5b-4c2e-9a99-5e6f708192a3',1004,NULL,'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\"','50f2917d-8e6c-4d3f-8baa-6f708192a3b4',1005,'{\"fragile\": true}','2024-03-11 09:00:00'),(7,8,'paid',76.20,2,'2024-03-11 18:45:00',NULL,NULL,'6103a28e-9f7d-4e40-9cbb-708192a3b4c5',1006,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','7214b39f-a08e-4f51-8dcc-8192a3b4c5d6',1007,NULL,'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','8325c4a0-b19f-4062-9edd-92a3b4c5d6e7',1008,'{\"parcels\": [1, 2]}','2024-03-15 10:00:00'),(10,7,'paid',1499.00,1,'2024-03-15 21:05:00',NULL,'C:\\Users\\ravi\\invoice.pdf','9436d5b1-c2a0-4173-8fee-a3b4c5d6e7f8',1009,NULL,'2024-03-15 21:05:00');
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
Corrections
Rien n'avait besoin d'être corrigé.
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 pour utf8mb4_0900_* (utf8mb4_bin pour les binaires)
MariaDB 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 MariaDB 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 (LONGTEXT vérifié par MariaDB)
MariaDB 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 INVISIBLE
MySQL a des colonnes invisibles depuis 8.0.23, MariaDB depuis 10.3.
CHECK constraints
conservé
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
conservé
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)
conservé
MySQL n'a pas ces types ; le texte que MariaDB écrit pour eux est conservé.
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)
WITH SYSTEM VERSIONING, à partir des lignes actuelles
Un dump ne contient que les lignes actuelles ; MySQL n'a pas de versionnage système.
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
conservé
MySQL n'a aucun de ces moteurs. Tous les autres moteurs sont conservés.
CREATE SEQUENCE (MariaDB)
CREATE SEQUENCE avec sa prochaine valeur
MySQL n'a pas de séquences.
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
Le script se charge sur MariaDB 10.11 et versions ultérieures, qui n'ont pas de type vector ; un tableau JSON garde chaque flottant, et VEC_FromText le relit.
Ligne du rapport: type_replaced
| Dans le fichier | Dans le script | Ligne du rapport |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci pour utf8mb4_0900_* (utf8mb4_bin pour les binaires)MariaDB 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 MariaDB garde les mêmes valeurs que la source. | |
| TIME | TIME, durées comprisesLe 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 (LONGTEXT vérifié par MariaDB)MariaDB 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 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 dump | un 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_TIMESTAMP | conservéLa même clause, avec les fractions de seconde de la colonne. | |
| generated columns | VIRTUAL ou STORED comme dans la sourceLa même formule, traduite terme à terme. | |
| generated columns with functions IntoSQL doesn't read | une colonne simpleUne formule qu'IntoSQL ne sait pas lire laisse une colonne simple et une ligne dans le rapport. | generated_not_translated |
| INVISIBLE columns | colonnes INVISIBLEMySQL a des colonnes invisibles depuis 8.0.23, MariaDB depuis 10.3. | |
| CHECK constraints | conservéLes mêmes contraintes CHECK, traduites terme à terme. | |
| CHECK constraints with functions IntoSQL doesn't read | non crééeUne contrainte CHECK qu'IntoSQL ne sait pas lire est omise et signalée. | check_skipped |
| CHECK ... NOT ENFORCED | non 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 GEOMETRY | conservéMySQL 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 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=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) | conservéMySQL n'a pas ces types ; le texte que MariaDB écrit pour eux est conservé. | |
| BINARY, VARBINARY, BLOB | conservéLes octets restent des octets. | |
| PARTITION BY | une seule tableLes lignes sont les mêmes ; partitionnez à nouveau la table si besoin. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | WITH SYSTEM VERSIONING, à partir des lignes actuellesUn dump ne contient que les lignes actuelles ; MySQL n'a pas de versionnage système. | |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | conservéMySQL n'a aucun de ces moteurs. Tous les autres moteurs sont conservés. | |
| CREATE SEQUENCE (MariaDB) | CREATE SEQUENCE avec sa prochaine valeurMySQL n'a pas de séquences. | |
| views, triggers, procedures, functions and events | listé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 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. | not_null_relaxed |
| text that isn't valid in its character set | les 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 TABLE | types 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 TABLE | GEOMETRYLe format de géométrie de MySQL est reconnu à partir des valeurs. | |
| SET NAMES utf8 from utf8mb4 tables | converti, 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-8 | lu 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 dumps | lu 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 rows | NULLUn convertisseur qui n'exécute pas de base de données ne peut pas les évaluer. | expression_value |
| DEFAULT in VALUES | la 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 default | NULLIl n'y a aucune valeur à copier. | default_keyword_null |
| REPLACE and INSERT IGNORE | lignes simplesUn dump a une ligne par clé, donc les lignes sont les mêmes. | replace_as_insert |
| types IntoSQL doesn't know | LONGBLOBUn blob contient les octets de n'importe quelle valeur ; changez le type après le chargement. | unknown_type |
| values that don't fit their column | NULLUn 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 geometries | NULLDes octets qui ne forment pas une géométrie ne peuvent pas être stockés comme telle. | bad_geometry |
| TIMESTAMP | conservé, 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 tableauLe script se charge sur MariaDB 10.11 et versions ultérieures, qui n'ont pas de type vector ; un tableau JSON garde chaque flottant, et VEC_FromText le relit. | type_replaced |
Charger le script dans MariaDB
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.
mariadb --default-character-set=utf8mb4 mydb < mariadb.mariadb.sqlLes clés étrangères sont créées comme le dump les déclare, avec FOREIGN_KEY_CHECKS=0 pendant le chargement des lignes, comme le fait mysqldump.
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 MariaDB 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, triggers, procédures, fonctions et autres objets écrits dans le propre langage de MariaDB sont listés par nom dans le rapport, jamais supprimés en silence, pour que vous vérifiiez chacun face à la version de MariaDB cible avant de le recréer.
Questions sur le passage de MariaDB 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.
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, INET4, INET6 et JSON restent tels quels. VECTOR devient un tableau JSON de ses flottants, car MariaDB avant 11.7 n'a pas de type vector ; VEC_FromText le relit.
Les valeurs AUTO_INCREMENT et les séquences sont-elles conservées ?
Oui. AUTO_INCREMENT et les séquences restent tels quels, et les valeurs par défaut qui puisent dans une séquence continuent d'y puiser.
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 le MariaDB où vous chargez avant de le recréer.
Sur quelles versions de MariaDB le script se charge-t-il ?
MariaDB 10.11 et versions ultérieures, quelle que soit la version qui a écrit le dump. Chaque dump de test se charge sur 10.11 et 11.4.