Конвертация MariaDB в MySQL
Перетащите дамп из mariadb-dump, mysqldump, phpMyAdmin или Adminer в формате .sql или .sql.gz и скачайте скрипт MySQL с теми же таблицами, ключами, индексами и данными. Каждое значение, которое MySQL не может хранить как есть, и каждый объект, который он не переносит, указаны в отчете.
18 строк конвертировано, 4 исправления, ни одна не отклонена
Таблицы в shop_2024_mariadb.sqlДамп MariaDB 11.8.9-MariaDB-ubu2404 · создан программой mariadb-dump · utf8mb4
customers8 строк2
8 столбцов 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 строк2
12 столбцов 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;
Исправления
- customers использует сортировку utf8mb4_uca1400_ai_ci, которой нет в MySQL, поэтому используется utf8mb4_unicode_520_ci; текст может сортироваться и сравниваться немного иначе.
- "last_ip" таблицы customers имеет тип inet6, которого нет в MySQL, поэтому тип varchar(39) с теми же значениями.
- orders использует сортировку utf8mb4_uca1400_ai_ci, которой нет в MySQL, поэтому используется utf8mb4_unicode_520_ci; текст может сортироваться и сравниваться немного иначе.
- "order_ref" таблицы orders имеет тип uuid, которого нет в MySQL, поэтому тип char(36) с теми же значениями.
Требует проверки
- Не создано последовательностей: 1; в MySQL их нет. Храните следующее значение в таблице, если оно нужно вашему приложению.
- Значение по умолчанию столбца "invoice" таблицы orders нельзя записать для MySQL (a sequence), поэтому у столбца его нет. Добавьте значение по умолчанию вручную, если оно нужно новым строкам.
Файл конвертируется на этом компьютере и никуда не загружается.
Другие примеры:
Что меняется при переходе с MariaDB на MySQL
Каждая строка - это правило, которое применяет конвертер, и строка отчета, которую он пишет, когда правило что-то меняет в ваших данных.
utf8mb4_0900_* and utf8mb4_uca1400_* collations
utf8mb4_unicode_520_ci (utf8mb4_bin для двоичных)
MySQL не знает новых сортировок, и из-за этой ошибки большинство дампов MySQL 8 не загружается в другие базы. unicode_520 точнее всего следует тем же правилам Unicode.
Строка отчета: collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)
сохраняется
Скрипт загружается с ALLOW_INVALID_DATES и без NO_ZERO_DATE, поэтому MySQL сохраняет те же значения, что были в источнике.
TIME
TIME, включая длительности
Тот же тип с тем же диапазоном.
TINYINT(1), BOOL
TINYINT(1)
Тот же тип с теми же значениями.
UNSIGNED and ZEROFILL
сохраняется
Те же типы.
ENUM and SET, the '' error value included
сохраняется
Те же типы; скрипт загружается без строгого режима, поэтому значение ошибки загружается как есть.
JSON
JSON
MySQL читает тот же текст JSON.
NUL bytes in text
сохраняется
Значение копируется с тем же экранированием, что и в источнике.
AUTO_INCREMENT
AUTO_INCREMENT со счетчиком таблицы
Счетчик продолжается с того места, где его оставил источник, включая счетчики групп MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump
индекс по столбцу и один счетчик на таблицу
InnoDB считает столбец, только если он стоит первым в индексе, и один раз на всю таблицу.
Строка отчета: myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMP
сохраняется
То же предложение, с долями секунды столбца.
generated columns
VIRTUAL или STORED, как в источнике
Та же формула, переведенная по частям.
generated columns with functions IntoSQL doesn't read
обычный столбец
Формула, которую IntoSQL не может прочитать, оставляет обычный столбец и строку в отчете.
Строка отчета: generated_not_translated
INVISIBLE columns
обычные столбцы
В MySQL невидимые столбцы есть с 8.0.23, в MariaDB с 10.3.
Строка отчета: invisible_column
CHECK constraints
сохраняются (MySQL 5.7 их разбирает и игнорирует)
Те же проверки, переведенные по частям.
CHECK constraints with functions IntoSQL doesn't read
не создается
Проверка, которую IntoSQL не может прочитать, опускается и попадает в отчет.
Строка отчета: check_skipped
CHECK ... NOT ENFORCED
не создается
MySQL 5.7 и MariaDB не могут хранить проверку, не применяя ее, а строки могут ее нарушать.
Строка отчета: check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY
без значения по умолчанию
MySQL принимает их с 8.0.13; скрипт загружается на 5.7, поэтому они опускаются и попадают в отчет. MariaDB их принимает.
Строка отчета: default_not_translated
functional indexes, KEY ((expr))
не создается
MySQL индексирует выражения с 8.0.13, а MariaDB не индексирует вовсе; генерируемый столбец с индексом делает то же самое.
Строка отчета: index_skipped
keys and indexes on a prefix, c(20)
сохраняется
Тот же индекс.
FULLTEXT indexes
сохраняется
Тот же индекс; MATCH ... AGAINST работает как раньше.
SPATIAL indexes
сохраняется
Тот же индекс.
foreign keys
сохраняются, загрузка с FOREIGN_KEY_CHECKS=0
Те же ключи; строки загружаются так же, как из исходного дампа.
GEOMETRY, POINT, POLYGON...
сохраняется, с SRID каждого значения
Копируются собственные байты геометрии сервера, включая SRID.
INET4, INET6, UUID (MariaDB)
varchar(15), varchar(39), char(36)
В MySQL нет таких типов; текст, который MariaDB для них пишет, сохраняется.
Строка отчета: type_replaced
BINARY, VARBINARY, BLOB
сохраняется
Байты остаются байтами.
PARTITION BY
одна таблица
Строки те же; при необходимости секционируйте таблицу заново.
Строка отчета: partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)
таблица с текущими строками
Дамп содержит только текущие строки; в MySQL нет системного версионирования.
Строка отчета: system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
InnoDB
В MySQL нет ни одного из этих движков. Все остальные движки сохраняются.
Строка отчета: engine_dropped
CREATE SEQUENCE (MariaDB)
не создается
В MySQL нет последовательностей.
Строка отчета: sequence_not_converted
views, triggers, procedures, functions and events
перечисляются в отчете
Они перечислены, чтобы вы создали их заново; их код часто указывает definer и возможности сервера.
Строка отчета: not_converted_objects
NOT NULL columns with values that become NULL
NOT NULL снимается
Столбец, значения которого пришлось заменить на NULL, не может сохранить NOT NULL, иначе загрузка остановится.
Строка отчета: not_null_relaxed
text that isn't valid in its character set
неверные байты заменяются символом замены
Скрипт в UTF-8; байты, которые им не являются, остановили бы загрузку.
Строка отчета: invalid_utf8_replaced
text decoded twice (ñ)
копируется как есть
Дамп содержит именно эти символы, поэтому они копируются; отчет на них указывает.
Строка отчета: mojibake_suspected
dumps without CREATE TABLE
типы определяются по значениям
Дамп, созданный с --no-create-info, содержит только строки, поэтому типы берутся из значений.
Строка отчета: no_schema
geometries in a dump without CREATE TABLE
GEOMETRY
Формат геометрии MySQL распознается по значениям.
SET NAMES utf8 from utf8mb4 tables
конвертируется с предупреждением
mysqldump из MySQL 5.x по умолчанию пишет 3-байтовую utf8 и заменяет каждый эмодзи вопросительным знаком еще до того, как файл увидит какой-либо конвертер.
Строка отчета: dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8
читается как Latin-1 (Windows-1252)
latin1 в MySQL - это Windows-1252, обычная кодировка таких дампов.
Строка отчета: charset_guessed
sjis, cp932, gbk, big5 dumps
читается как UTF-8, с предупреждением
Эти кодировки пока не декодируются.
Строка отчета: unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows
вычисляются
Некоторые программы дампа записывают значения как такие вызовы; они читаются как значения, которые возвращают.
other expressions in rows
NULL
Конвертер, который не запускает базу данных, не может их вычислить.
Строка отчета: expression_value
DEFAULT in VALUES
значение столбца по умолчанию
Литеральное значение по умолчанию копируется в строку.
Строка отчета: default_keyword_filled
DEFAULT in VALUES without a literal default
NULL
Копировать нечего.
Строка отчета: default_keyword_null
REPLACE and INSERT IGNORE
обычные строки
В дампе одна строка на ключ, поэтому строки те же.
Строка отчета: replace_as_insert
types IntoSQL doesn't know
LONGBLOB
Blob вмещает байты любого значения; измените тип после загрузки.
Строка отчета: unknown_type
values that don't fit their column
NULL
Поврежденный или написанный вручную дамп может содержать значения, которые столбец не вмещает; они становятся NULL, чтобы остальное загрузилось.
Строка отчета: invalid_value_null
unreadable geometries
NULL
Байты, которые не являются геометрией, нельзя сохранить как геометрию.
Строка отчета: bad_geometry
TIMESTAMP
сохраняется, загрузка в часовом поясе, указанном в дампе
Скрипт задает тот же часовой пояс, что и дамп, поэтому каждый момент времени тот же.
VECTOR(n) (MariaDB 11.7+)
json с числами float в виде массива
В MySQL 5.7 и 8.0 нет векторного типа; массив JSON сохраняет каждое число float в любой версии.
Строка отчета: type_replaced
| В MariaDB | В MySQL | Строка отчета |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (utf8mb4_bin для двоичных)MySQL не знает новых сортировок, и из-за этой ошибки большинство дампов MySQL 8 не загружается в другие базы. unicode_520 точнее всего следует тем же правилам Unicode. | collation_replaced |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | сохраняетсяСкрипт загружается с ALLOW_INVALID_DATES и без NO_ZERO_DATE, поэтому MySQL сохраняет те же значения, что были в источнике. | |
| TIME | TIME, включая длительностиТот же тип с тем же диапазоном. | |
| TINYINT(1), BOOL | TINYINT(1)Тот же тип с теми же значениями. | |
| UNSIGNED and ZEROFILL | сохраняетсяТе же типы. | |
| ENUM and SET, the '' error value included | сохраняетсяТе же типы; скрипт загружается без строгого режима, поэтому значение ошибки загружается как есть. | |
| JSON | JSONMySQL читает тот же текст JSON. | |
| NUL bytes in text | сохраняетсяЗначение копируется с тем же экранированием, что и в источнике. | |
| AUTO_INCREMENT | AUTO_INCREMENT со счетчиком таблицыСчетчик продолжается с того места, где его оставил источник, включая счетчики групп MyISAM. | |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | индекс по столбцу и один счетчик на таблицуInnoDB считает столбец, только если он стоит первым в индексе, и один раз на всю таблицу. | myisam_group_autoincrement |
| ON UPDATE CURRENT_TIMESTAMP | сохраняетсяТо же предложение, с долями секунды столбца. | |
| generated columns | VIRTUAL или STORED, как в источникеТа же формула, переведенная по частям. | |
| generated columns with functions IntoSQL doesn't read | обычный столбецФормула, которую IntoSQL не может прочитать, оставляет обычный столбец и строку в отчете. | generated_not_translated |
| INVISIBLE columns | обычные столбцыВ MySQL невидимые столбцы есть с 8.0.23, в MariaDB с 10.3. | invisible_column |
| CHECK constraints | сохраняются (MySQL 5.7 их разбирает и игнорирует)Те же проверки, переведенные по частям. | |
| CHECK constraints with functions IntoSQL doesn't read | не создаетсяПроверка, которую IntoSQL не может прочитать, опускается и попадает в отчет. | check_skipped |
| CHECK ... NOT ENFORCED | не создаетсяMySQL 5.7 и MariaDB не могут хранить проверку, не применяя ее, а строки могут ее нарушать. | check_not_enforced |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | без значения по умолчаниюMySQL принимает их с 8.0.13; скрипт загружается на 5.7, поэтому они опускаются и попадают в отчет. MariaDB их принимает. | default_not_translated |
| functional indexes, KEY ((expr)) | не создаетсяMySQL индексирует выражения с 8.0.13, а MariaDB не индексирует вовсе; генерируемый столбец с индексом делает то же самое. | index_skipped |
| keys and indexes on a prefix, c(20) | сохраняетсяТот же индекс. | |
| FULLTEXT indexes | сохраняетсяТот же индекс; MATCH ... AGAINST работает как раньше. | |
| SPATIAL indexes | сохраняетсяТот же индекс. | |
| foreign keys | сохраняются, загрузка с FOREIGN_KEY_CHECKS=0Те же ключи; строки загружаются так же, как из исходного дампа. | |
| GEOMETRY, POINT, POLYGON... | сохраняется, с SRID каждого значенияКопируются собственные байты геометрии сервера, включая SRID. | |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36)В MySQL нет таких типов; текст, который MariaDB для них пишет, сохраняется. | type_replaced |
| BINARY, VARBINARY, BLOB | сохраняетсяБайты остаются байтами. | |
| PARTITION BY | одна таблицаСтроки те же; при необходимости секционируйте таблицу заново. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | таблица с текущими строкамиДамп содержит только текущие строки; в MySQL нет системного версионирования. | system_versioning_dropped |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDBВ MySQL нет ни одного из этих движков. Все остальные движки сохраняются. | engine_dropped |
| CREATE SEQUENCE (MariaDB) | не создаетсяВ MySQL нет последовательностей. | sequence_not_converted |
| views, triggers, procedures, functions and events | перечисляются в отчетеОни перечислены, чтобы вы создали их заново; их код часто указывает definer и возможности сервера. | not_converted_objects |
| NOT NULL columns with values that become NULL | NOT NULL снимаетсяСтолбец, значения которого пришлось заменить на NULL, не может сохранить NOT NULL, иначе загрузка остановится. | not_null_relaxed |
| text that isn't valid in its character set | неверные байты заменяются символом заменыСкрипт в UTF-8; байты, которые им не являются, остановили бы загрузку. | invalid_utf8_replaced |
| text decoded twice (ñ) | копируется как естьДамп содержит именно эти символы, поэтому они копируются; отчет на них указывает. | mojibake_suspected |
| dumps without CREATE TABLE | типы определяются по значениямДамп, созданный с --no-create-info, содержит только строки, поэтому типы берутся из значений. | no_schema |
| geometries in a dump without CREATE TABLE | GEOMETRYФормат геометрии MySQL распознается по значениям. | |
| SET NAMES utf8 from utf8mb4 tables | конвертируется с предупреждениемmysqldump из MySQL 5.x по умолчанию пишет 3-байтовую utf8 и заменяет каждый эмодзи вопросительным знаком еще до того, как файл увидит какой-либо конвертер. | dump_lost_four_byte_chars |
| dumps without SET NAMES whose text isn't UTF-8 | читается как Latin-1 (Windows-1252)latin1 в MySQL - это Windows-1252, обычная кодировка таких дампов. | charset_guessed |
| sjis, cp932, gbk, big5 dumps | читается как UTF-8, с предупреждениемЭти кодировки пока не декодируются. | unsupported_charset |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | вычисляютсяНекоторые программы дампа записывают значения как такие вызовы; они читаются как значения, которые возвращают. | |
| other expressions in rows | NULLКонвертер, который не запускает базу данных, не может их вычислить. | expression_value |
| DEFAULT in VALUES | значение столбца по умолчаниюЛитеральное значение по умолчанию копируется в строку. | default_keyword_filled |
| DEFAULT in VALUES without a literal default | NULLКопировать нечего. | default_keyword_null |
| REPLACE and INSERT IGNORE | обычные строкиВ дампе одна строка на ключ, поэтому строки те же. | replace_as_insert |
| types IntoSQL doesn't know | LONGBLOBBlob вмещает байты любого значения; измените тип после загрузки. | unknown_type |
| values that don't fit their column | NULLПоврежденный или написанный вручную дамп может содержать значения, которые столбец не вмещает; они становятся NULL, чтобы остальное загрузилось. | invalid_value_null |
| unreadable geometries | NULLБайты, которые не являются геометрией, нельзя сохранить как геометрию. | bad_geometry |
| TIMESTAMP | сохраняется, загрузка в часовом поясе, указанном в дампеСкрипт задает тот же часовой пояс, что и дамп, поэтому каждый момент времени тот же. | |
| VECTOR(n) (MariaDB 11.7+) | json с числами float в виде массиваВ MySQL 5.7 и 8.0 нет векторного типа; массив JSON сохраняет каждое число float в любой версии. | type_replaced |
Загрузите скрипт в MySQL
Скрипт создает таблицы, копирует строки, затем добавляет ключи, индексы и внешние ключи, поэтому загрузка идет быстро и останавливается на первой ошибке.
mysql --default-character-set=utf8mb4 mydb < mariadb.mysql.sqlВнешние ключи создаются так, как их объявляет дамп, с FOREIGN_KEY_CHECKS=0 на время загрузки строк, поэтому строка, которая ссылается на отсутствующую строку, не останавливает загрузку.
Для большого дампа запускайте клиент на той же машине, где работает сервер, и увеличьте max_allowed_packet, если отдельная строка очень большая.
IntoSQL Pro загружает файл прямо в MySQL из приложения для компьютера или командной строки, без написания скрипта.
Как создать дамп MariaDB для лучшего результата
Конвертер читает то, что есть в дампе. Эти параметры сохраняют в нем больше ваших данных:
- --default-character-set=utf8mb4 сохраняет эмодзи и другие 4-байтовые символы, которые дамп в utf8mb3 теряет еще до конвертера.
- --hex-blob записывает двоичные столбцы и значения VECTOR в шестнадцатеричном виде, который не портится при копировании между системами.
- --routines --triggers --events добавляют эти объекты в дамп, чтобы отчет мог их перечислить.
Что не конвертируется
Представления, триггеры, хранимые процедуры, функции и события написаны на собственном языке MariaDB. Они перечислены в отчете по имени и никогда не удаляются молча, чтобы вы могли переписать их для MySQL.
Вопросы о MariaDB в MySQL
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Мой дамп загружается на сервер?
Нет. Конвертер работает в вашем браузере и читает дамп с диска по частям, поэтому он никогда не покидает ваш компьютер. Приложение для компьютера и командная строка тоже конвертируют на вашем компьютере.
Насколько большим может быть дамп?
Конвертер никогда не держит весь дамп в памяти: он читает файл дважды, по диапазонам, и пишет скрипт по ходу чтения. Дампы в несколько гигабайт конвертируются в браузере, в приложении для компьютера и в командной строке.
Из каких версий MariaDB может быть дамп?
Дампы из mariadb-dump и mysqldump на MariaDB с 10.3 по 12, с одним INSERT на таблицу или одним на строку. Каждый тестовый дамп создан в MariaDB 10.11, 11.4 и 11.8 и сверен с источником ячейка за ячейкой.
Сохраняются ли столбцы UUID, INET6, JSON и VECTOR?
UUID становится char(36), INET4 и INET6 - varchar, JSON - json, а VECTOR - массивом json из его чисел float, потому что в MySQL 5.7 и 8.0 таких типов нет.
Сохраняются ли значения AUTO_INCREMENT и последовательности?
AUTO_INCREMENT остается как есть и продолжается с того места, где его оставил дамп. В MySQL нет последовательностей, поэтому они и значения по умолчанию, которые из них берутся, попадают в отчет.
А хранимые процедуры и триггеры?
Они перечислены в отчете по имени и не конвертируются, чтобы вы могли проверить каждый в MySQL, прежде чем создать его заново.
На каких версиях MySQL загружается скрипт?
MySQL 5.7 и новее. Каждый тестовый дамп загружается на 5.7 и 9 и останавливается на первой ошибке, если что-то пойдет не так.