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

Przenieś zrzut MySQL do starszej lub nowszej wersji MySQL

Upuść zrzut z mysqldump, mysqlpump, phpMyAdmin lub Adminer, z MySQL od 5.5 do 9, jako .sql lub .sql.gz, i pobierz skrypt, który ładuje się na MySQL 5.7 i nowszych. Collation znane tylko MySQL 8 i nowszym, takie jak utf8mb4_0900_ai_ci, stają się utf8mb4_unicode_520_ci, a każda zmiana jest wymieniona 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: 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;

Poprawki

  1. customers używa porównywania utf8mb4_0900_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.
  2. orders używa porównywania utf8mb4_0900_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.

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

Inne przykłady:

Co się zmienia między plikiem a skryptem

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 plikuW skrypcieWpis w raporcie
utf8mb4_0900_* and utf8mb4_uca1400_* collationsutf8mb4_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.
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.
JSONJSONMySQL 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 columnszwykłe kolumnyMySQL ma niewidoczne kolumny od 8.0.23, MariaDB od 10.3.invisible_column
CHECK constraintszachowane (MySQL 5.7 je parsuje i ignoruje)Te 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 GEOMETRYbrak 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 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)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, BLOBzachowaneBajty pozostają bajtami.
PARTITION BYjedna 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 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ą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 < mysql.mysql.sql

Klucze 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 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, funkcje i inne obiekty napisane we własnym języku MySQL są wymienione w raporcie z nazwy i nigdy nie są pomijane po cichu, więc możesz sprawdzić każdy z nich w wersji MySQL, do której ładujesz, zanim go odtworzysz.

Pytania o przenoszenie MySQL między wersjami

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?

MySQL je zachowuje: skrypt na czas ładowania ustawia tryb SQL, który akceptuje 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 kontynuuje od miejsca, w którym zostawił go zrzut.

Czy TINYINT(1) staje się boolean?

Zostaje 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 wersji MySQL, do której ładujesz, zanim go odtworzysz. ON UPDATE CURRENT_TIMESTAMP zostaje bez zmian.

Na jakich wersjach MySQL ładuje się skrypt?

MySQL 5.7 i nowsze. Każdy testowy zrzut ładuje się na 5.7 i 9, zatrzymując się na pierwszym błędzie, jeśli coś pójdzie nie tak.