Przejdź do treści
Strona główna IntoSQL

Konwertuj MySQL do MariaDB

Upuść zrzut z mysqldump, mariadb-dump, mysqlpump, phpMyAdmin lub Adminer jako .sql lub .sql.gz i pobierz skrypt MariaDB z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której MariaDB nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.

Twój plik
sqlshop_2024.sqlPlik przykładowy, 5,1 kB
Twoja baza danych

18 wierszy przekonwertowanych, 2 poprawki, brak odrzuconych

Pokaż

Tabele w pliku shop_2024.sqlZrzut MySQL 8.0.46 · zapisany przez mysqldump · utf8mb4

  • customers8 wierszy1
    7 kolumn
    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 wierszy1
    9 kolumn
    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: 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 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;

Poprawki

  1. customers używa porównywania utf8mb4_0900_ai_ci, którego MariaDB nie ma, więc używa utf8mb4_unicode_520_ci; tekst może się sortować i porównywać trochę inaczej.
  2. orders używa porównywania utf8mb4_0900_ai_ci, którego MariaDB nie ma, więc używa utf8mb4_unicode_520_ci; tekst może się sortować i porównywać trochę inaczej.

Plik jest konwertowany na tym komputerze i nigdy nie jest wysyłany.

Inne przykłady:

Co zmienia się między MySQL a MariaDB

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 dla utf8mb4_0900_* (utf8mb4_bin dla binarnych)

    MariaDB 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 MariaDB 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 (LONGTEXT sprawdzany przez MariaDB)

    MariaDB 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

    kolumny INVISIBLE

    MySQL ma niewidoczne kolumny od 8.0.23, MariaDB od 10.3.

  • CHECK constraints

    zachowane

    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

    zachowane

    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)

    zachowane

    MySQL nie ma takich typów; tekst, który MariaDB dla nich zapisuje, jest zachowywany.

  • 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)

    WITH SYSTEM VERSIONING, od bieżących wierszy

    Zrzut zawiera tylko bieżące wiersze; MySQL nie ma wersjonowania systemowego.

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

    zachowane

    MySQL nie ma żadnego z tych silników. Każdy inny silnik jest zachowywany.

  • CREATE SEQUENCE (MariaDB)

    CREATE SEQUENCE z następną wartością

    MySQL nie ma sekwencji.

  • 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ą

    Skrypt ładuje się na MariaDB 10.11 i nowszych, które nie mają typu wektorowego; tablica JSON zachowuje każdą liczbę float, a VEC_FromText odczytuje ją z powrotem.

    Wpis w raporcie: type_replaced

W MySQLW MariaDBWpis w raporcie
utf8mb4_0900_* and utf8mb4_uca1400_* collationsutf8mb4_unicode_520_ci dla utf8mb4_0900_* (utf8mb4_bin dla binarnych)MariaDB 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 MariaDB zachowuje te same wartości, które miało źródło.
TIMETIME, łącznie z czasami trwaniaTen sam typ, z tym samym zakresem.
TINYINT(1), BOOLTINYINT(1)Ten sam typ z tymi samymi wartościami.
UNSIGNED and ZEROFILLzachowaneTe same typy.
ENUM and SET, the '' error value includedzachowaneTe same typy; skrypt ładuje się bez trybu ścisłego, więc wartość błędu ładuje się bez zmian.
JSONJSON (LONGTEXT sprawdzany przez MariaDB)MariaDB odczytuje ten sam tekst JSON.
NUL bytes in textzachowaneWartość jest kopiowana z tą samą sekwencją ucieczki, której użyło źródło.
AUTO_INCREMENTAUTO_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 dumpindeks 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_TIMESTAMPzachowaneTa sama klauzula, z ułamkami sekund kolumny.
generated columnsVIRTUAL lub STORED jak w źródleTa sama formuła, przetłumaczona element po elemencie.
generated columns with functions IntoSQL doesn't readzwykła kolumnaFormuła, której IntoSQL nie potrafi odczytać, zostawia zwykłą kolumnę i wpis w raporcie.generated_not_translated
INVISIBLE columnskolumny INVISIBLEMySQL ma niewidoczne kolumny od 8.0.23, MariaDB od 10.3.
CHECK constraintszachowaneTe same ograniczenia CHECK, przetłumaczone element po elemencie.
CHECK constraints with functions IntoSQL doesn't readnie jest tworzoneCHECK, którego IntoSQL nie odczyta, jest pomijany i zgłaszany.check_skipped
CHECK ... NOT ENFORCEDnie 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 GEOMETRYzachowaneMySQL 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 indexeszachowaneTen sam indeks; MATCH ... AGAINST działa jak wcześniej.
SPATIAL indexeszachowaneTen sam indeks.
foreign keyszachowane, ł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)zachowaneMySQL nie ma takich typów; tekst, który MariaDB dla nich zapisuje, jest zachowywany.
BINARY, VARBINARY, BLOBzachowaneBajty pozostają bajtami.
PARTITION BYjedna tabelaWiersze są te same; jeśli trzeba, podziel tabelę na partycje ponownie.partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)WITH SYSTEM VERSIONING, od bieżących wierszyZrzut zawiera tylko bieżące wiersze; MySQL nie ma wersjonowania systemowego.
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)zachowaneMySQL nie ma żadnego z tych silników. Każdy inny silnik jest zachowywany.
CREATE SEQUENCE (MariaDB)CREATE SEQUENCE z następną wartościąMySQL nie ma sekwencji.
views, triggers, procedures, functions and eventswymienione 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 NULLNOT 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 setbłę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 TABLEtypy 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 TABLEGEOMETRYFormat geometrii MySQL jest rozpoznawany po wartościach.
SET NAMES utf8 from utf8mb4 tablesprzekonwertowane, 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-8odczytane jako Latin-1 (Windows-1252)latin1 w MySQL to Windows-1252, zwykłe kodowanie takich zrzutów.charset_guessed
sjis, cp932, gbk, big5 dumpsodczytane jako UTF-8, z ostrzeżeniemTe kodowania nie są jeszcze dekodowane.unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rowsobliczoneNiektóre narzędzia do zrzutów zapisują wartości jako takie wywołania; są odczytywane jako wartości, które zwracają.
other expressions in rowsNULLKonwerter, który nie uruchamia bazy danych, nie może ich obliczyć.expression_value
DEFAULT in VALUESwartość domyślna kolumnyDosłowna wartość domyślna jest kopiowana do wiersza.default_keyword_filled
DEFAULT in VALUES without a literal defaultNULLNie ma wartości do skopiowania.default_keyword_null
REPLACE and INSERT IGNOREzwykłe wierszeZrzut ma jeden wiersz na klucz, więc wiersze są te same.replace_as_insert
types IntoSQL doesn't knowLONGBLOBBlob mieści bajty dowolnej wartości; zmień typ po załadowaniu.unknown_type
values that don't fit their columnNULLUszkodzony 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 geometriesNULLBajtów, które nie są geometrią, nie da się zapisać jako geometrii.bad_geometry
TIMESTAMPzachowane, ł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ąSkrypt ładuje się na MariaDB 10.11 i nowszych, które nie mają typu wektorowego; tablica JSON zachowuje każdą liczbę float, a VEC_FromText odczytuje ją z powrotem.type_replaced

Załaduj skrypt do MariaDB

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

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

Klucze obce są tworzone tak, jak deklaruje je zrzut, z FOREIGN_KEY_CHECKS=0 podczas ładowania wierszy, tak jak robi to mysqldump.

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 MariaDB z aplikacji na komputer lub wiersza poleceń, bez pisania skryptu.

Jak zrobić zrzut MySQL 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 utf8 traci, zanim zobaczy go konwerter.
  • --hex-blob zapisuje kolumny binarne 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 każdej bazy danych. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla MariaDB.

Pytania o konwersję MySQL do MariaDB

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ń.

Czy odczytuje zrzuty MariaDB?

Tak. Zrzuty z mariadb-dump i z MariaDB od 10.3 do 12 są konwertowane tak samo, łącznie z kolumnami INET6, INET4 i UUID z MariaDB.

Co dzieje się z datami 0000-00-00?

MariaDB je zachowuje: skrypt na czas ładowania ustawia tryb SQL, który przyjmuje daty zerowe i niemożliwe, więc trafiają bez zmian.

Czy wartości AUTO_INCREMENT są zachowywane?

Tak. AUTO_INCREMENT zostaje bez zmian, a licznik tabeli idzie dalej od miejsca, w którym zostawił go zrzut.

Czy TINYINT(1) staje się boolean?

Pozostaje TINYINT(1), jak w źródle, więc każda wartość zachowuje swoją liczbę.

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 MariaDB, zanim go odtworzysz. ON UPDATE CURRENT_TIMESTAMP zostaje bez zmian.

Na jakich wersjach MariaDB ładuje się skrypt?

MariaDB 10.11 i nowsze. Każdy testowy zrzut ładuje się na 10.11 i 11.4, z MySQL od 5.7 do 9 i z MariaDB.