Konwertuj MariaDB do MySQL
Upuść zrzut z mariadb-dump, mysqldump, phpMyAdmin lub Adminer jako .sql lub .sql.gz i pobierz skrypt MySQL z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której MySQL nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.
18 wierszy przekonwertowanych, 4 poprawki, brak odrzuconych
Tabele w pliku shop_2024_mariadb.sqlZrzut MariaDB 11.8.9-MariaDB-ubu2404 · zapisany przez mariadb-dump · utf8mb4
customers8 wierszy2
8 kolumn 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 varchar(39) orders10 wierszy2
12 kolumn 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 char(36) not null invoice int(11) not null details json 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(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` varchar(39) DEFAULT NULL,
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(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` char(36) NOT NULL,
`invoice` int(11) NOT NULL,
`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_unicode_520_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;
Poprawki
- customers używa porównywania utf8mb4_uca1400_ai_ci, którego MySQL nie ma, więc używa utf8mb4_unicode_520_ci; tekst może się sortować i porównywać trochę inaczej.
- "last_ip" w tabeli customers to inet6, czego MySQL nie ma, więc ma typ varchar(39) z tymi samymi wartościami.
- orders używa porównywania utf8mb4_uca1400_ai_ci, którego MySQL nie ma, więc używa utf8mb4_unicode_520_ci; tekst może się sortować i porównywać trochę inaczej.
- "order_ref" w tabeli orders to uuid, czego MySQL nie ma, więc ma typ char(36) z tymi samymi wartościami.
Do sprawdzenia
- Pominięto 1 sekwencję; MySQL nie ma sekwencji. Przechowuj następną wartość w tabeli, jeśli twoja aplikacja jej potrzebuje.
- Wartości domyślnej "invoice" w tabeli orders nie da się zapisać dla MySQL (a sequence), więc kolumna nie ma wartości domyślnej. Dodaj wartość domyślną ręcznie, jeśli nowe wiersze jej potrzebują.
Plik jest konwertowany na tym komputerze i nigdy nie jest wysyłany.
Inne przykłady:
Co zmienia się między MariaDB a MySQL
Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.
utf8mb4_0900_* and utf8mb4_uca1400_* collations
utf8mb4_unicode_520_ci (utf8mb4_bin dla binarnych)
MySQL nie zna nowszych porównywań; to błąd, który zatrzymuje większość zrzutów MySQL 8 w innych bazach. unicode_520 najwierniej stosuje te same reguły Unicode.
Wpis w raporcie: collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)
zachowane
Skrypt ładuje się z ALLOW_INVALID_DATES i bez NO_ZERO_DATE, więc MySQL zachowuje te same wartości, które miało źródło.
TIME
TIME, łącznie z czasami trwania
Ten sam typ, z tym samym zakresem.
TINYINT(1), BOOL
TINYINT(1)
Ten sam typ z tymi samymi wartościami.
UNSIGNED and ZEROFILL
zachowane
Te same typy.
ENUM and SET, the '' error value included
zachowane
Te same typy; skrypt ładuje się bez trybu ścisłego, więc wartość błędu ładuje się bez zmian.
JSON
JSON
MySQL odczytuje ten sam tekst JSON.
NUL bytes in text
zachowane
Wartość jest kopiowana z tą samą sekwencją ucieczki, której użyło źródło.
AUTO_INCREMENT
AUTO_INCREMENT z licznikiem tabeli
Licznik idzie dalej od miejsca, w którym zostawiło go źródło, łącznie z licznikami grup w MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump
indeks na kolumnie i jeden licznik dla tabeli
InnoDB liczy kolumnę tylko wtedy, gdy rozpoczyna ona indeks, i jednym licznikiem dla całej tabeli.
Wpis w raporcie: myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMP
zachowane
Ta sama klauzula, z ułamkami sekund kolumny.
generated columns
VIRTUAL lub STORED jak w źródle
Ta sama formuła, przetłumaczona element po elemencie.
generated columns with functions IntoSQL doesn't read
zwykła kolumna
Formuła, której IntoSQL nie potrafi odczytać, zostawia zwykłą kolumnę i wpis w raporcie.
Wpis w raporcie: generated_not_translated
INVISIBLE columns
zwykłe kolumny
MySQL ma niewidoczne kolumny od 8.0.23, MariaDB od 10.3.
Wpis w raporcie: invisible_column
CHECK constraints
zachowane (MySQL 5.7 je parsuje i ignoruje)
Te same ograniczenia CHECK, przetłumaczone element po elemencie.
CHECK constraints with functions IntoSQL doesn't read
nie jest tworzone
CHECK, którego IntoSQL nie odczyta, jest pomijany i zgłaszany.
Wpis w raporcie: check_skipped
CHECK ... NOT ENFORCED
nie jest tworzone
MySQL 5.7 i MariaDB nie mogą zachować ograniczenia CHECK bez jego stosowania, a wiersze mogą je łamać.
Wpis w raporcie: check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY
brak wartości domyślnej
MySQL przyjmuje je od 8.0.13; skrypt ładuje się na 5.7, więc są pomijane i zgłaszane w raporcie. MariaDB je przyjmuje.
Wpis w raporcie: default_not_translated
functional indexes, KEY ((expr))
nie jest tworzony
MySQL indeksuje wyrażenia od 8.0.13, a MariaDB wcale; kolumna generowana z indeksem robi to samo.
Wpis w raporcie: index_skipped
keys and indexes on a prefix, c(20)
zachowane
Ten sam indeks.
FULLTEXT indexes
zachowane
Ten sam indeks; MATCH ... AGAINST działa jak wcześniej.
SPATIAL indexes
zachowane
Ten sam indeks.
foreign keys
zachowane, ładowane z FOREIGN_KEY_CHECKS=0
Te same klucze; wiersze ładują się tak jak ze zrzutu źródłowego.
GEOMETRY, POINT, POLYGON...
zachowane, z SRID każdej wartości
Kopiowane są własne bajty geometrii serwera, łącznie z SRID.
INET4, INET6, UUID (MariaDB)
varchar(15), varchar(39), char(36)
MySQL nie ma takich typów; tekst, który MariaDB dla nich zapisuje, jest zachowywany.
Wpis w raporcie: type_replaced
BINARY, VARBINARY, BLOB
zachowane
Bajty pozostają bajtami.
PARTITION BY
jedna tabela
Wiersze są te same; jeśli trzeba, podziel tabelę na partycje ponownie.
Wpis w raporcie: partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)
tabela z bieżącymi wierszami
Zrzut zawiera tylko bieżące wiersze; MySQL nie ma wersjonowania systemowego.
Wpis w raporcie: system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
InnoDB
MySQL nie ma żadnego z tych silników. Każdy inny silnik jest zachowywany.
Wpis w raporcie: engine_dropped
CREATE SEQUENCE (MariaDB)
nie jest tworzone
MySQL nie ma sekwencji.
Wpis w raporcie: sequence_not_converted
views, triggers, procedures, functions and events
wymienione w raporcie
Trafiają na listę do ręcznego odtworzenia; ich kod często wskazuje definera i funkcje serwera.
Wpis w raporcie: not_converted_objects
NOT NULL columns with values that become NULL
NOT NULL usunięte
Kolumna, której wartości musiały stać się NULL, nie może zachować NOT NULL, bo ładowanie by się zatrzymało.
Wpis w raporcie: not_null_relaxed
text that isn't valid in its character set
błędne bajty jako znak zastępczy
Skrypt jest w UTF-8; bajty, które nim nie są, zatrzymałyby ładowanie.
Wpis w raporcie: invalid_utf8_replaced
text decoded twice (ñ)
skopiowane bez zmian
Zrzut zawiera dokładnie te znaki, więc są kopiowane; raport je wskazuje.
Wpis w raporcie: mojibake_suspected
dumps without CREATE TABLE
typy odczytane z wartości
Zrzut zrobiony z --no-create-info zawiera tylko wiersze, więc typy pochodzą z wartości.
Wpis w raporcie: no_schema
geometries in a dump without CREATE TABLE
GEOMETRY
Format geometrii MySQL jest rozpoznawany po wartościach.
SET NAMES utf8 from utf8mb4 tables
przekonwertowane, z ostrzeżeniem
mysqldump z MySQL 5.x domyślnie zapisuje 3-bajtowe utf8 i zastępuje każde emoji znakiem zapytania, zanim jakikolwiek konwerter zobaczy plik.
Wpis w raporcie: dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8
odczytane jako Latin-1 (Windows-1252)
latin1 w MySQL to Windows-1252, zwykłe kodowanie takich zrzutów.
Wpis w raporcie: charset_guessed
sjis, cp932, gbk, big5 dumps
odczytane jako UTF-8, z ostrzeżeniem
Te kodowania nie są jeszcze dekodowane.
Wpis w raporcie: unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows
obliczone
Niektóre narzędzia do zrzutów zapisują wartości jako takie wywołania; są odczytywane jako wartości, które zwracają.
other expressions in rows
NULL
Konwerter, który nie uruchamia bazy danych, nie może ich obliczyć.
Wpis w raporcie: expression_value
DEFAULT in VALUES
wartość domyślna kolumny
Dosłowna wartość domyślna jest kopiowana do wiersza.
Wpis w raporcie: default_keyword_filled
DEFAULT in VALUES without a literal default
NULL
Nie ma wartości do skopiowania.
Wpis w raporcie: default_keyword_null
REPLACE and INSERT IGNORE
zwykłe wiersze
Zrzut ma jeden wiersz na klucz, więc wiersze są te same.
Wpis w raporcie: replace_as_insert
types IntoSQL doesn't know
LONGBLOB
Blob mieści bajty dowolnej wartości; zmień typ po załadowaniu.
Wpis w raporcie: unknown_type
values that don't fit their column
NULL
Uszkodzony lub ręcznie pisany zrzut może zawierać wartości, których kolumna nie przyjmie; stają się NULL, aby reszta się załadowała.
Wpis w raporcie: invalid_value_null
unreadable geometries
NULL
Bajtów, które nie są geometrią, nie da się zapisać jako geometrii.
Wpis w raporcie: bad_geometry
TIMESTAMP
zachowane, ładowane w strefie czasowej podanej w zrzucie
Skrypt ustawia tę samą strefę czasową co zrzut, więc każdy moment jest ten sam.
VECTOR(n) (MariaDB 11.7+)
json z liczbami float jako tablicą
MySQL 5.7 i 8.0 nie mają typu wektorowego; tablica JSON zachowuje każdą liczbę float w każdej wersji.
Wpis w raporcie: type_replaced
| W MariaDB | W MySQL | Wpis w raporcie |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (utf8mb4_bin dla binarnych)MySQL nie zna nowszych porównywań; to błąd, który zatrzymuje większość zrzutów MySQL 8 w innych bazach. unicode_520 najwierniej stosuje te same reguły Unicode. | collation_replaced |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | zachowaneSkrypt ładuje się z ALLOW_INVALID_DATES i bez NO_ZERO_DATE, więc MySQL zachowuje te same wartości, które miało źródło. | |
| TIME | TIME, łącznie z czasami trwaniaTen sam typ, z tym samym zakresem. | |
| TINYINT(1), BOOL | TINYINT(1)Ten sam typ z tymi samymi wartościami. | |
| UNSIGNED and ZEROFILL | zachowaneTe same typy. | |
| ENUM and SET, the '' error value included | zachowaneTe same typy; skrypt ładuje się bez trybu ścisłego, więc wartość błędu ładuje się bez zmian. | |
| JSON | JSONMySQL odczytuje ten sam tekst JSON. | |
| NUL bytes in text | zachowaneWartość jest kopiowana z tą samą sekwencją ucieczki, której użyło źródło. | |
| AUTO_INCREMENT | AUTO_INCREMENT z licznikiem tabeliLicznik idzie dalej od miejsca, w którym zostawiło go źródło, łącznie z licznikami grup w MyISAM. | |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | indeks na kolumnie i jeden licznik dla tabeliInnoDB liczy kolumnę tylko wtedy, gdy rozpoczyna ona indeks, i jednym licznikiem dla całej tabeli. | myisam_group_autoincrement |
| ON UPDATE CURRENT_TIMESTAMP | zachowaneTa sama klauzula, z ułamkami sekund kolumny. | |
| generated columns | VIRTUAL lub STORED jak w źródleTa sama formuła, przetłumaczona element po elemencie. | |
| generated columns with functions IntoSQL doesn't read | zwykła kolumnaFormuła, której IntoSQL nie potrafi odczytać, zostawia zwykłą kolumnę i wpis w raporcie. | generated_not_translated |
| INVISIBLE columns | zwykłe kolumnyMySQL ma niewidoczne kolumny od 8.0.23, MariaDB od 10.3. | invisible_column |
| CHECK constraints | zachowane (MySQL 5.7 je parsuje i ignoruje)Te same ograniczenia CHECK, przetłumaczone element po elemencie. | |
| CHECK constraints with functions IntoSQL doesn't read | nie jest tworzoneCHECK, którego IntoSQL nie odczyta, jest pomijany i zgłaszany. | check_skipped |
| CHECK ... NOT ENFORCED | nie jest tworzoneMySQL 5.7 i MariaDB nie mogą zachować ograniczenia CHECK bez jego stosowania, a wiersze mogą je łamać. | check_not_enforced |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | brak wartości domyślnejMySQL przyjmuje je od 8.0.13; skrypt ładuje się na 5.7, więc są pomijane i zgłaszane w raporcie. MariaDB je przyjmuje. | default_not_translated |
| functional indexes, KEY ((expr)) | nie jest tworzonyMySQL indeksuje wyrażenia od 8.0.13, a MariaDB wcale; kolumna generowana z indeksem robi to samo. | index_skipped |
| keys and indexes on a prefix, c(20) | zachowaneTen sam indeks. | |
| FULLTEXT indexes | zachowaneTen sam indeks; MATCH ... AGAINST działa jak wcześniej. | |
| SPATIAL indexes | zachowaneTen sam indeks. | |
| foreign keys | zachowane, ładowane z FOREIGN_KEY_CHECKS=0Te same klucze; wiersze ładują się tak jak ze zrzutu źródłowego. | |
| GEOMETRY, POINT, POLYGON... | zachowane, z SRID każdej wartościKopiowane są własne bajty geometrii serwera, łącznie z SRID. | |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36)MySQL nie ma takich typów; tekst, który MariaDB dla nich zapisuje, jest zachowywany. | type_replaced |
| BINARY, VARBINARY, BLOB | zachowaneBajty pozostają bajtami. | |
| PARTITION BY | jedna tabelaWiersze są te same; jeśli trzeba, podziel tabelę na partycje ponownie. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | tabela z bieżącymi wierszamiZrzut zawiera tylko bieżące wiersze; MySQL nie ma wersjonowania systemowego. | system_versioning_dropped |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDBMySQL nie ma żadnego z tych silników. Każdy inny silnik jest zachowywany. | engine_dropped |
| CREATE SEQUENCE (MariaDB) | nie jest tworzoneMySQL nie ma sekwencji. | sequence_not_converted |
| views, triggers, procedures, functions and events | wymienione w raporcieTrafiają na listę do ręcznego odtworzenia; ich kod często wskazuje definera i funkcje serwera. | not_converted_objects |
| NOT NULL columns with values that become NULL | NOT NULL usunięteKolumna, której wartości musiały stać się NULL, nie może zachować NOT NULL, bo ładowanie by się zatrzymało. | not_null_relaxed |
| text that isn't valid in its character set | błędne bajty jako znak zastępczySkrypt jest w UTF-8; bajty, które nim nie są, zatrzymałyby ładowanie. | invalid_utf8_replaced |
| text decoded twice (ñ) | skopiowane bez zmianZrzut zawiera dokładnie te znaki, więc są kopiowane; raport je wskazuje. | mojibake_suspected |
| dumps without CREATE TABLE | typy odczytane z wartościZrzut zrobiony z --no-create-info zawiera tylko wiersze, więc typy pochodzą z wartości. | no_schema |
| geometries in a dump without CREATE TABLE | GEOMETRYFormat geometrii MySQL jest rozpoznawany po wartościach. | |
| SET NAMES utf8 from utf8mb4 tables | przekonwertowane, z ostrzeżeniemmysqldump z MySQL 5.x domyślnie zapisuje 3-bajtowe utf8 i zastępuje każde emoji znakiem zapytania, zanim jakikolwiek konwerter zobaczy plik. | dump_lost_four_byte_chars |
| dumps without SET NAMES whose text isn't UTF-8 | odczytane jako Latin-1 (Windows-1252)latin1 w MySQL to Windows-1252, zwykłe kodowanie takich zrzutów. | charset_guessed |
| sjis, cp932, gbk, big5 dumps | odczytane jako UTF-8, z ostrzeżeniemTe kodowania nie są jeszcze dekodowane. | unsupported_charset |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | obliczoneNiektóre narzędzia do zrzutów zapisują wartości jako takie wywołania; są odczytywane jako wartości, które zwracają. | |
| other expressions in rows | NULLKonwerter, który nie uruchamia bazy danych, nie może ich obliczyć. | expression_value |
| DEFAULT in VALUES | wartość domyślna kolumnyDosłowna wartość domyślna jest kopiowana do wiersza. | default_keyword_filled |
| DEFAULT in VALUES without a literal default | NULLNie ma wartości do skopiowania. | default_keyword_null |
| REPLACE and INSERT IGNORE | zwykłe wierszeZrzut ma jeden wiersz na klucz, więc wiersze są te same. | replace_as_insert |
| types IntoSQL doesn't know | LONGBLOBBlob mieści bajty dowolnej wartości; zmień typ po załadowaniu. | unknown_type |
| values that don't fit their column | NULLUszkodzony lub ręcznie pisany zrzut może zawierać wartości, których kolumna nie przyjmie; stają się NULL, aby reszta się załadowała. | invalid_value_null |
| unreadable geometries | NULLBajtów, które nie są geometrią, nie da się zapisać jako geometrii. | bad_geometry |
| TIMESTAMP | zachowane, ładowane w strefie czasowej podanej w zrzucieSkrypt ustawia tę samą strefę czasową co zrzut, więc każdy moment jest ten sam. | |
| VECTOR(n) (MariaDB 11.7+) | json z liczbami float jako tablicąMySQL 5.7 i 8.0 nie mają typu wektorowego; tablica JSON zachowuje każdą liczbę float w każdej wersji. | type_replaced |
Załaduj skrypt do MySQL
Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.
mysql --default-character-set=utf8mb4 mydb < mariadb.mysql.sqlKlucze obce są tworzone tak, jak deklaruje je zrzut, z FOREIGN_KEY_CHECKS=0 podczas ładowania wierszy, więc wiersz wskazujący na brakujący wiersz nie zatrzymuje ładowania.
Przy dużym zrzucie uruchom klienta na tej samej maszynie co serwer i zwiększ max_allowed_packet, jeśli pojedynczy wiersz jest bardzo duży.
IntoSQL Pro ładuje plik prosto do MySQL z aplikacji na komputer lub wiersza poleceń, bez pisania skryptu.
Jak zrobić zrzut MariaDB dla najlepszego wyniku
Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:
- --default-character-set=utf8mb4 zachowuje emoji i inne 4-bajtowe znaki, które zrzut utf8mb3 traci, zanim zobaczy go konwerter.
- --hex-blob zapisuje kolumny binarne i wartości VECTOR szesnastkowo, co przetrwa kopiowanie między systemami.
- --routines --triggers --events dodają te obiekty do zrzutu, aby raport mógł je wymienić.
Co nie jest konwertowane
Widoki, wyzwalacze, procedury składowane, funkcje i zdarzenia są pisane we własnym języku MariaDB. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla MySQL.
Pytania o konwersję MariaDB do MySQL
Nie ma tu odpowiedzi? Napisz do nas przez stronę kontaktu, a odpowie człowiek. Strona kontaktu
Czy mój zrzut jest wysyłany?
Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.
Jak duży może być zrzut?
Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.
Z jakich wersji MariaDB może pochodzić zrzut?
Zrzuty z mariadb-dump i mysqldump z MariaDB od 10.3 do 12, z jednym INSERT na tabelę lub jednym na wiersz. Każdy testowy zrzut pochodzi z MariaDB 10.11, 11.4 i 11.8 i jest porównywany ze źródłem komórka po komórce.
Czy kolumny UUID, INET6, JSON i VECTOR są zachowywane?
UUID staje się char(36), INET4 i INET6 varchar, JSON json, a VECTOR tablicą json jego liczb float, bo MySQL 5.7 i 8.0 nie mają takich typów.
Czy wartości AUTO_INCREMENT i sekwencje są zachowywane?
AUTO_INCREMENT zostaje bez zmian i idzie dalej od miejsca, w którym zostawił go zrzut. MySQL nie ma sekwencji, więc one i wartości domyślne, które z nich pobierają, trafiają do raportu.
A procedury składowane i wyzwalacze?
Raport wymienia je z nazwy, ale nie są konwertowane, więc możesz sprawdzić każdy z nich w MySQL, zanim go odtworzysz.
Na jakich wersjach MySQL ładuje się skrypt?
MySQL 5.7 i nowsze. Każdy testowy zrzut ładuje się na 5.7 i 9 i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.