Porta un dump MySQL su un MySQL più vecchio o più recente
Trascina un dump di mysqldump, mysqlpump, phpMyAdmin o Adminer, da MySQL 5.5 a 9, come .sql o .sql.gz, e scarica uno script che si carica su MySQL 5.7 e successivi. Le collation che conoscono solo MySQL 8 e successivi, come utf8mb4_0900_ai_ci, diventano utf8mb4_unicode_520_ci, e ogni modifica è elencata nel report.
18 righe convertite, 2 correzioni, nessuna rifiutata
Tabelle in shop_2024.sqlDump MySQL 8.0.46 · scritto da mysqldump · utf8mb4
customers8 righe1
7 colonne id int 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 orders10 righe1
9 colonne id int unsigned not null customer_id int unsigned not null status enum('pending','paid','shipped','cancelled') not null total decimal(10,2) not null items smallint unsigned not null ordered_at datetime not null shipped_at datetime note varchar(255) updated_at timestamp 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;
Correzioni
- customers usa la collation utf8mb4_0900_ai_ci, che MySQL non ha, quindi usa utf8mb4_unicode_520_ci; il testo può essere ordinato e confrontato in modo un po' diverso.
- orders usa la collation utf8mb4_0900_ai_ci, che MySQL non ha, quindi usa utf8mb4_unicode_520_ci; il testo può essere ordinato e confrontato in modo un po' diverso.
Il tuo file viene convertito su questo computer e non viene mai caricato.
Altri esempi:
Cosa cambia tra il file e lo script
Ogni riga è una regola che il convertitore applica, con la riga del report che scrive quando la regola cambia qualcosa nei tuoi dati.
utf8mb4_0900_* and utf8mb4_uca1400_* collations
utf8mb4_unicode_520_ci (utf8mb4_bin per quelle binarie)
MySQL non conosce le collation più recenti, l'errore che impedisce alla maggior parte dei dump di MySQL 8 di caricarsi altrove. unicode_520 segue più da vicino le stesse regole Unicode.
Riga del report: collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)
mantenuto
Lo script si carica con ALLOW_INVALID_DATES e senza NO_ZERO_DATE, quindi MySQL mantiene gli stessi valori della sorgente.
TIME
TIME, durate incluse
Lo stesso tipo, con lo stesso intervallo.
TINYINT(1), BOOL
TINYINT(1)
Lo stesso tipo con gli stessi valori.
UNSIGNED and ZEROFILL
mantenuto
Gli stessi tipi.
ENUM and SET, the '' error value included
mantenuto
Gli stessi tipi; lo script si carica senza modalità strict, quindi il valore di errore si carica così com'è.
JSON
JSON
MySQL legge lo stesso testo JSON.
NUL bytes in text
mantenuto
Il valore viene copiato con lo stesso escape usato dalla sorgente.
AUTO_INCREMENT
AUTO_INCREMENT con il contatore della tabella
Il contatore riparte da dove l'ha lasciato la sorgente, inclusi i contatori per gruppo di MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump
un indice sulla colonna e un solo contatore per la tabella
InnoDB conta una colonna solo quando apre un indice, e una sola volta per tutta la tabella.
Riga del report: myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMP
mantenuto
La stessa clausola, con le frazioni di secondo della colonna.
generated columns
VIRTUAL o STORED come nella sorgente
La stessa formula, tradotta termine per termine.
generated columns with functions IntoSQL doesn't read
una colonna semplice
Una formula che IntoSQL non sa leggere lascia una colonna semplice e una riga nel report.
Riga del report: generated_not_translated
INVISIBLE columns
colonne normali
MySQL ha colonne invisibili dalla 8.0.23, MariaDB dalla 10.3.
Riga del report: invisible_column
CHECK constraints
mantenuti (MySQL 5.7 li analizza e li ignora)
Gli stessi vincoli CHECK, tradotti termine per termine.
CHECK constraints with functions IntoSQL doesn't read
non creato
Un vincolo CHECK che IntoSQL non sa leggere viene omesso e segnalato.
Riga del report: check_skipped
CHECK ... NOT ENFORCED
non creati
MySQL 5.7 e MariaDB non possono mantenere un vincolo CHECK senza applicarlo, e le righe potrebbero violarlo.
Riga del report: check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY
nessun valore predefinito
MySQL li accetta dalla 8.0.13; lo script si carica sulla 5.7, quindi vengono omessi e segnalati. MariaDB li accetta.
Riga del report: default_not_translated
functional indexes, KEY ((expr))
non creato
MySQL indicizza le espressioni dalla 8.0.13 e MariaDB per niente; una colonna generata con un indice fa lo stesso.
Riga del report: index_skipped
keys and indexes on a prefix, c(20)
mantenuto
Lo stesso indice.
FULLTEXT indexes
mantenuto
Lo stesso indice; MATCH ... AGAINST funziona come prima.
SPATIAL indexes
mantenuto
Lo stesso indice.
foreign keys
mantenute, caricate con FOREIGN_KEY_CHECKS=0
Le stesse chiavi; le righe si caricano come dal dump di origine.
GEOMETRY, POINT, POLYGON...
mantenuto, con lo SRID di ogni valore
I byte di geometria propri del server vengono copiati, SRID incluso.
INET4, INET6, UUID (MariaDB)
varchar(15), varchar(39), char(36)
MySQL non ha questi tipi; il testo che MariaDB scrive per loro viene mantenuto.
Riga del report: type_replaced
BINARY, VARBINARY, BLOB
mantenuto
I byte restano byte.
PARTITION BY
una sola tabella
Le righe sono le stesse; partiziona di nuovo la tabella se serve.
Riga del report: partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)
una tabella con le righe attuali
Un dump contiene solo le righe attuali; MySQL non ha il system versioning.
Riga del report: system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
InnoDB
MySQL non ha nessuno di questi motori. Ogni altro motore viene mantenuto.
Riga del report: engine_dropped
CREATE SEQUENCE (MariaDB)
non creato
MySQL non ha sequenze.
Riga del report: sequence_not_converted
views, triggers, procedures, functions and events
elencati nel report
Vengono elencati perché tu li ricrei; il loro codice spesso nomina il definer e funzioni del server.
Riga del report: not_converted_objects
NOT NULL columns with values that become NULL
NOT NULL rimosso
Una colonna i cui valori sono dovuti diventare NULL non può mantenere NOT NULL, altrimenti il caricamento si fermerebbe.
Riga del report: not_null_relaxed
text that isn't valid in its character set
i byte errati come carattere di sostituzione
Lo script è UTF-8; i byte che non lo sono fermerebbero il caricamento.
Riga del report: invalid_utf8_replaced
text decoded twice (ñ)
copiato così com'è
Il dump contiene esattamente questi caratteri, quindi vengono copiati; il report li segnala.
Riga del report: mojibake_suspected
dumps without CREATE TABLE
tipi ricavati dai valori
Un dump fatto con --no-create-info contiene solo righe, quindi i tipi vengono dai valori.
Riga del report: no_schema
geometries in a dump without CREATE TABLE
GEOMETRY
Il formato delle geometrie di MySQL viene riconosciuto dai valori.
SET NAMES utf8 from utf8mb4 tables
convertito, con un avviso
mysqldump di MySQL 5.x scrive utf8 a 3 byte per impostazione predefinita e sostituisce ogni emoji con un punto interrogativo prima che un convertitore veda il file.
Riga del report: dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8
letto come Latin-1 (Windows-1252)
Il latin1 di MySQL è Windows-1252, la codifica abituale di questi dump.
Riga del report: charset_guessed
sjis, cp932, gbk, big5 dumps
letto come UTF-8, con un avviso
Queste codifiche non vengono ancora decodificate.
Riga del report: unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows
valutate
Alcuni strumenti di dump scrivono i valori come queste chiamate; vengono letti come i valori che producono.
other expressions in rows
NULL
Un convertitore che non esegue un database non può valutarle.
Riga del report: expression_value
DEFAULT in VALUES
il valore predefinito della colonna
Un valore predefinito letterale viene copiato nella riga.
Riga del report: default_keyword_filled
DEFAULT in VALUES without a literal default
NULL
Non c'è nessun valore da copiare.
Riga del report: default_keyword_null
REPLACE and INSERT IGNORE
righe semplici
Un dump ha una riga per chiave, quindi le righe sono le stesse.
Riga del report: replace_as_insert
types IntoSQL doesn't know
LONGBLOB
Un blob contiene i byte di qualsiasi valore; cambia il tipo dopo il caricamento.
Riga del report: unknown_type
values that don't fit their column
NULL
Un dump danneggiato o scritto a mano può contenere valori che la colonna non ammette; diventano NULL così il resto si carica.
Riga del report: invalid_value_null
unreadable geometries
NULL
I byte che non sono una geometria non si possono salvare come tale.
Riga del report: bad_geometry
TIMESTAMP
mantenuto, caricato nel fuso orario indicato dal dump
Lo script imposta lo stesso fuso orario del dump, quindi ogni istante resta lo stesso.
VECTOR(n) (MariaDB 11.7+)
json con i float come array
MySQL 5.7 e 8.0 non hanno un tipo vector; un array JSON mantiene ogni float su ogni versione.
Riga del report: type_replaced
| Nel file | Nello script | Riga del report |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (utf8mb4_bin per quelle binarie)MySQL non conosce le collation più recenti, l'errore che impedisce alla maggior parte dei dump di MySQL 8 di caricarsi altrove. unicode_520 segue più da vicino le stesse regole Unicode. | collation_replaced |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | mantenutoLo script si carica con ALLOW_INVALID_DATES e senza NO_ZERO_DATE, quindi MySQL mantiene gli stessi valori della sorgente. | |
| TIME | TIME, durate incluseLo stesso tipo, con lo stesso intervallo. | |
| TINYINT(1), BOOL | TINYINT(1)Lo stesso tipo con gli stessi valori. | |
| UNSIGNED and ZEROFILL | mantenutoGli stessi tipi. | |
| ENUM and SET, the '' error value included | mantenutoGli stessi tipi; lo script si carica senza modalità strict, quindi il valore di errore si carica così com'è. | |
| JSON | JSONMySQL legge lo stesso testo JSON. | |
| NUL bytes in text | mantenutoIl valore viene copiato con lo stesso escape usato dalla sorgente. | |
| AUTO_INCREMENT | AUTO_INCREMENT con il contatore della tabellaIl contatore riparte da dove l'ha lasciato la sorgente, inclusi i contatori per gruppo di MyISAM. | |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | un indice sulla colonna e un solo contatore per la tabellaInnoDB conta una colonna solo quando apre un indice, e una sola volta per tutta la tabella. | myisam_group_autoincrement |
| ON UPDATE CURRENT_TIMESTAMP | mantenutoLa stessa clausola, con le frazioni di secondo della colonna. | |
| generated columns | VIRTUAL o STORED come nella sorgenteLa stessa formula, tradotta termine per termine. | |
| generated columns with functions IntoSQL doesn't read | una colonna sempliceUna formula che IntoSQL non sa leggere lascia una colonna semplice e una riga nel report. | generated_not_translated |
| INVISIBLE columns | colonne normaliMySQL ha colonne invisibili dalla 8.0.23, MariaDB dalla 10.3. | invisible_column |
| CHECK constraints | mantenuti (MySQL 5.7 li analizza e li ignora)Gli stessi vincoli CHECK, tradotti termine per termine. | |
| CHECK constraints with functions IntoSQL doesn't read | non creatoUn vincolo CHECK che IntoSQL non sa leggere viene omesso e segnalato. | check_skipped |
| CHECK ... NOT ENFORCED | non creatiMySQL 5.7 e MariaDB non possono mantenere un vincolo CHECK senza applicarlo, e le righe potrebbero violarlo. | check_not_enforced |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | nessun valore predefinitoMySQL li accetta dalla 8.0.13; lo script si carica sulla 5.7, quindi vengono omessi e segnalati. MariaDB li accetta. | default_not_translated |
| functional indexes, KEY ((expr)) | non creatoMySQL indicizza le espressioni dalla 8.0.13 e MariaDB per niente; una colonna generata con un indice fa lo stesso. | index_skipped |
| keys and indexes on a prefix, c(20) | mantenutoLo stesso indice. | |
| FULLTEXT indexes | mantenutoLo stesso indice; MATCH ... AGAINST funziona come prima. | |
| SPATIAL indexes | mantenutoLo stesso indice. | |
| foreign keys | mantenute, caricate con FOREIGN_KEY_CHECKS=0Le stesse chiavi; le righe si caricano come dal dump di origine. | |
| GEOMETRY, POINT, POLYGON... | mantenuto, con lo SRID di ogni valoreI byte di geometria propri del server vengono copiati, SRID incluso. | |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36)MySQL non ha questi tipi; il testo che MariaDB scrive per loro viene mantenuto. | type_replaced |
| BINARY, VARBINARY, BLOB | mantenutoI byte restano byte. | |
| PARTITION BY | una sola tabellaLe righe sono le stesse; partiziona di nuovo la tabella se serve. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | una tabella con le righe attualiUn dump contiene solo le righe attuali; MySQL non ha il system versioning. | system_versioning_dropped |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDBMySQL non ha nessuno di questi motori. Ogni altro motore viene mantenuto. | engine_dropped |
| CREATE SEQUENCE (MariaDB) | non creatoMySQL non ha sequenze. | sequence_not_converted |
| views, triggers, procedures, functions and events | elencati nel reportVengono elencati perché tu li ricrei; il loro codice spesso nomina il definer e funzioni del server. | not_converted_objects |
| NOT NULL columns with values that become NULL | NOT NULL rimossoUna colonna i cui valori sono dovuti diventare NULL non può mantenere NOT NULL, altrimenti il caricamento si fermerebbe. | not_null_relaxed |
| text that isn't valid in its character set | i byte errati come carattere di sostituzioneLo script è UTF-8; i byte che non lo sono fermerebbero il caricamento. | invalid_utf8_replaced |
| text decoded twice (ñ) | copiato così com'èIl dump contiene esattamente questi caratteri, quindi vengono copiati; il report li segnala. | mojibake_suspected |
| dumps without CREATE TABLE | tipi ricavati dai valoriUn dump fatto con --no-create-info contiene solo righe, quindi i tipi vengono dai valori. | no_schema |
| geometries in a dump without CREATE TABLE | GEOMETRYIl formato delle geometrie di MySQL viene riconosciuto dai valori. | |
| SET NAMES utf8 from utf8mb4 tables | convertito, con un avvisomysqldump di MySQL 5.x scrive utf8 a 3 byte per impostazione predefinita e sostituisce ogni emoji con un punto interrogativo prima che un convertitore veda il file. | dump_lost_four_byte_chars |
| dumps without SET NAMES whose text isn't UTF-8 | letto come Latin-1 (Windows-1252)Il latin1 di MySQL è Windows-1252, la codifica abituale di questi dump. | charset_guessed |
| sjis, cp932, gbk, big5 dumps | letto come UTF-8, con un avvisoQueste codifiche non vengono ancora decodificate. | unsupported_charset |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | valutateAlcuni strumenti di dump scrivono i valori come queste chiamate; vengono letti come i valori che producono. | |
| other expressions in rows | NULLUn convertitore che non esegue un database non può valutarle. | expression_value |
| DEFAULT in VALUES | il valore predefinito della colonnaUn valore predefinito letterale viene copiato nella riga. | default_keyword_filled |
| DEFAULT in VALUES without a literal default | NULLNon c'è nessun valore da copiare. | default_keyword_null |
| REPLACE and INSERT IGNORE | righe sempliciUn dump ha una riga per chiave, quindi le righe sono le stesse. | replace_as_insert |
| types IntoSQL doesn't know | LONGBLOBUn blob contiene i byte di qualsiasi valore; cambia il tipo dopo il caricamento. | unknown_type |
| values that don't fit their column | NULLUn dump danneggiato o scritto a mano può contenere valori che la colonna non ammette; diventano NULL così il resto si carica. | invalid_value_null |
| unreadable geometries | NULLI byte che non sono una geometria non si possono salvare come tale. | bad_geometry |
| TIMESTAMP | mantenuto, caricato nel fuso orario indicato dal dumpLo script imposta lo stesso fuso orario del dump, quindi ogni istante resta lo stesso. | |
| VECTOR(n) (MariaDB 11.7+) | json con i float come arrayMySQL 5.7 e 8.0 non hanno un tipo vector; un array JSON mantiene ogni float su ogni versione. | type_replaced |
Carica lo script in MySQL
Lo script crea le tabelle, copia le righe, poi aggiunge chiavi, indici e chiavi esterne, così si carica in fretta e si ferma al primo errore.
mysql --default-character-set=utf8mb4 mydb < mysql.mysql.sqlLe chiavi esterne vengono create come le dichiara il dump, con FOREIGN_KEY_CHECKS=0 mentre le righe si caricano, così una riga che punta a una riga mancante non ferma il caricamento.
Per un dump grande, esegui il client sulla stessa macchina del server, e aumenta max_allowed_packet se una singola riga è molto grande.
IntoSQL Pro carica il file direttamente in MySQL dall'app desktop o dalla riga di comando, senza scrivere uno script.
Fai il dump di MySQL per il miglior risultato
Il convertitore legge ciò che il dump contiene. Con queste opzioni il dump conserva più dei tuoi dati:
- --default-character-set=utf8mb4 conserva emoji e altri caratteri a 4 byte, che un dump utf8 perde prima che il convertitore lo veda.
- --hex-blob scrive le colonne binarie in esadecimale, che resiste alla copia tra sistemi diversi.
- --routines --triggers --events aggiungono quegli oggetti al dump, così il report può elencarli.
Cosa non viene convertito
Viste, trigger, procedure, funzioni e altri oggetti scritti nel linguaggio di MySQL sono elencati per nome nel report, mai eliminati in silenzio, così puoi verificare ognuno con la versione di MySQL in cui carichi prima di ricrearlo.
Domande sul passaggio di MySQL tra versioni
Non trovi la risposta? Scrivici dalla pagina dei contatti e ti risponde una persona. Pagina dei contatti
Il mio dump viene caricato?
No. Il convertitore funziona nel tuo browser e legge il dump dal tuo disco a pezzi, quindi non lascia mai il tuo computer. Anche l'app desktop e la riga di comando convertono sul tuo computer.
Quanto può essere grande il dump?
Il convertitore non tiene mai l'intero dump in memoria: legge il file due volte, per intervalli, e scrive lo script man mano. I dump di più gigabyte si convertono nel browser, nell'app desktop e con la riga di comando.
Legge i dump di MariaDB?
Sì. I dump di mariadb-dump e di MariaDB dalla 10.3 alla 12 si convertono allo stesso modo, comprese le colonne INET6, INET4 e UUID di MariaDB.
Cosa succede alle date 0000-00-00?
MySQL le conserva: lo script imposta una modalità SQL che accetta date zero e impossibili durante il caricamento, quindi arrivano così come sono.
I valori AUTO_INCREMENT vengono mantenuti?
Sì. AUTO_INCREMENT resta com'è, e il contatore della tabella riparte da dove lo ha lasciato il dump.
TINYINT(1) diventa boolean?
Resta TINYINT(1), come nell'origine, quindi ogni valore conserva il suo numero.
E le stored procedure e i trigger?
Sono elencati per nome nel report e non vengono convertiti, così puoi verificare ognuno con la versione di MySQL in cui carichi prima di ricrearlo. ON UPDATE CURRENT_TIMESTAMP resta com'è.
Su quali versioni di MySQL si carica lo script?
MySQL 5.7 e successivi. Ogni dump di prova si carica su 5.7 e 9, fermandosi al primo errore se qualcosa va storto.