Chuyển MariaDB sang MySQL
Thả bản dump từ mariadb-dump, mysqldump, phpMyAdmin hoặc Adminer, dạng .sql hoặc .sql.gz, và tải xuống tập lệnh MySQL với cùng bảng, khóa, chỉ mục và dữ liệu. Mọi giá trị MySQL không chứa được nguyên trạng, và mọi đối tượng nó không hỗ trợ, đều được liệt kê trong báo cáo.
Đã chuyển đổi 18 hàng, 4 bản sửa, không hàng nào bị từ chối
Các bảng trong shop_2024_mariadb.sqlBản dump MariaDB 11.8.9-MariaDB-ubu2404 · do mariadb-dump ghi · utf8mb4
customers8 hàng2
8 cột 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 hàng2
12 cột 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;
Bản sửa
- customers dùng collation utf8mb4_uca1400_ai_ci, mà MySQL không có, nên dùng utf8mb4_unicode_520_ci; văn bản có thể sắp xếp và so sánh hơi khác.
- "last_ip" của customers là inet6, kiểu MySQL không có, nên là varchar(39) với cùng giá trị.
- orders dùng collation utf8mb4_uca1400_ai_ci, mà MySQL không có, nên dùng utf8mb4_unicode_520_ci; văn bản có thể sắp xếp và so sánh hơi khác.
- "order_ref" của orders là uuid, kiểu MySQL không có, nên là char(36) với cùng giá trị.
Cần xem lại
- 1 sequence không được tạo; MySQL không có sequence. Hãy lưu giá trị tiếp theo trong một bảng nếu ứng dụng cần.
- Giá trị mặc định của "invoice" trong orders không viết được cho MySQL (a sequence), nên cột không có giá trị mặc định. Hãy thêm giá trị mặc định thủ công nếu hàng mới cần nó.
Tệp được chuyển đổi ngay trên máy tính này và không bao giờ được tải lên.
Mẫu khác:
Những gì thay đổi từ MariaDB sang MySQL
Mỗi hàng là một quy tắc trình chuyển đổi áp dụng, kèm dòng báo cáo được ghi khi quy tắc thay đổi dữ liệu của bạn.
utf8mb4_0900_* and utf8mb4_uca1400_* collations
utf8mb4_unicode_520_ci (utf8mb4_bin cho collation nhị phân)
MySQL không biết các collation mới hơn, lỗi khiến hầu hết bản dump MySQL 8 không nạp được ở nơi khác. unicode_520 bám sát nhất cùng quy tắc Unicode.
Dòng báo cáo: collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)
được giữ
Tập lệnh nạp với ALLOW_INVALID_DATES và không có NO_ZERO_DATE, nên MySQL giữ đúng các giá trị của nguồn.
TIME
TIME, kể cả khoảng thời gian
Cùng kiểu, cùng phạm vi.
TINYINT(1), BOOL
TINYINT(1)
Cùng kiểu, cùng giá trị.
UNSIGNED and ZEROFILL
được giữ
Cùng các kiểu.
ENUM and SET, the '' error value included
được giữ
Cùng các kiểu; tập lệnh nạp không ở chế độ nghiêm ngặt, nên giá trị lỗi được nạp nguyên trạng.
JSON
JSON
MySQL đọc cùng văn bản JSON.
NUL bytes in text
được giữ
Giá trị được sao chép với cùng chuỗi thoát mà nguồn đã dùng.
AUTO_INCREMENT
AUTO_INCREMENT với bộ đếm của bảng
Bộ đếm tiếp tục từ chỗ nguồn dừng lại, kể cả bộ đếm theo nhóm của MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump
một chỉ mục trên cột và một bộ đếm cho cả bảng
InnoDB chỉ đếm một cột khi nó đứng đầu một chỉ mục, và đếm một lần cho cả bảng.
Dòng báo cáo: myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMP
được giữ
Cùng mệnh đề, với phần giây lẻ của cột.
generated columns
VIRTUAL hoặc STORED như trong nguồn
Cùng công thức, được chuyển đổi từng thành phần.
generated columns with functions IntoSQL doesn't read
một cột thường
Công thức IntoSQL không đọc được để lại một cột thường và một dòng trong báo cáo.
Dòng báo cáo: generated_not_translated
INVISIBLE columns
cột thường
MySQL có cột ẩn từ 8.0.23, MariaDB từ 10.3.
Dòng báo cáo: invisible_column
CHECK constraints
được giữ (MySQL 5.7 phân tích rồi bỏ qua chúng)
Cùng các ràng buộc kiểm tra, được chuyển đổi từng thành phần.
CHECK constraints with functions IntoSQL doesn't read
không được tạo
Ràng buộc kiểm tra IntoSQL không đọc được sẽ bị bỏ và được báo cáo.
Dòng báo cáo: check_skipped
CHECK ... NOT ENFORCED
không được tạo
MySQL 5.7 và MariaDB không thể giữ một ràng buộc kiểm tra mà không áp dụng nó, và các hàng có thể vi phạm nó.
Dòng báo cáo: check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY
không có giá trị mặc định
MySQL nhận chúng từ 8.0.13; tập lệnh nạp trên 5.7, nên chúng bị bỏ và được báo cáo. MariaDB nhận chúng.
Dòng báo cáo: default_not_translated
functional indexes, KEY ((expr))
không được tạo
MySQL lập chỉ mục trên biểu thức từ 8.0.13 và MariaDB hoàn toàn không; một cột tính toán có chỉ mục làm được điều tương tự.
Dòng báo cáo: index_skipped
keys and indexes on a prefix, c(20)
được giữ
Cùng chỉ mục.
FULLTEXT indexes
được giữ
Cùng chỉ mục; MATCH ... AGAINST hoạt động như trước.
SPATIAL indexes
được giữ
Cùng chỉ mục.
foreign keys
được giữ, nạp với FOREIGN_KEY_CHECKS=0
Cùng các khóa; các hàng được nạp như từ bản dump nguồn.
GEOMETRY, POINT, POLYGON...
được giữ, kèm SRID của từng giá trị
Các byte hình học gốc của máy chủ được sao chép, kể cả SRID.
INET4, INET6, UUID (MariaDB)
varchar(15), varchar(39), char(36)
MySQL không có các kiểu này; văn bản MariaDB ghi cho chúng được giữ.
Dòng báo cáo: type_replaced
BINARY, VARBINARY, BLOB
được giữ
Byte vẫn là byte.
PARTITION BY
một bảng
Các hàng giữ nguyên; hãy phân vùng lại bảng nếu cần.
Dòng báo cáo: partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)
bảng chứa các hàng hiện tại
Bản dump chỉ chứa các hàng hiện tại; MySQL không có system versioning.
Dòng báo cáo: system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
InnoDB
MySQL không có engine nào trong số này. Mọi engine khác được giữ.
Dòng báo cáo: engine_dropped
CREATE SEQUENCE (MariaDB)
không được tạo
MySQL không có sequence.
Dòng báo cáo: sequence_not_converted
views, triggers, procedures, functions and events
được liệt kê trong báo cáo
Chúng được liệt kê để bạn tạo lại; mã của chúng thường nêu definer và các tính năng của máy chủ.
Dòng báo cáo: not_converted_objects
NOT NULL columns with values that become NULL
bỏ NOT NULL
Cột có giá trị phải chuyển thành NULL không thể giữ NOT NULL, nếu không quá trình nạp sẽ dừng.
Dòng báo cáo: not_null_relaxed
text that isn't valid in its character set
byte lỗi thành ký tự thay thế
Tập lệnh là UTF-8; byte không hợp lệ sẽ làm dừng quá trình nạp.
Dòng báo cáo: invalid_utf8_replaced
text decoded twice (ñ)
sao chép nguyên trạng
Bản dump chứa đúng các ký tự này, nên chúng được sao chép; báo cáo chỉ ra chúng.
Dòng báo cáo: mojibake_suspected
dumps without CREATE TABLE
kiểu suy ra từ giá trị
Bản dump tạo với --no-create-info chỉ có các hàng, nên kiểu được suy ra từ giá trị.
Dòng báo cáo: no_schema
geometries in a dump without CREATE TABLE
GEOMETRY
Định dạng hình học của MySQL được nhận diện từ giá trị.
SET NAMES utf8 from utf8mb4 tables
được chuyển đổi, kèm cảnh báo
mysqldump của MySQL 5.x mặc định ghi utf8 3 byte và thay mọi emoji bằng dấu chấm hỏi trước khi bất kỳ trình chuyển đổi nào thấy tệp.
Dòng báo cáo: dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8
đọc dưới dạng Latin-1 (Windows-1252)
latin1 của MySQL là Windows-1252, bảng mã thường gặp của những bản dump như vậy.
Dòng báo cáo: charset_guessed
sjis, cp932, gbk, big5 dumps
đọc dưới dạng UTF-8, kèm cảnh báo
Các bảng mã này chưa được giải mã.
Dòng báo cáo: unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows
được tính ra giá trị
Một số công cụ dump ghi giá trị dưới dạng các lệnh gọi này; chúng được đọc thành giá trị mà chúng tạo ra.
other expressions in rows
NULL
Trình chuyển đổi không chạy cơ sở dữ liệu thì không tính được chúng.
Dòng báo cáo: expression_value
DEFAULT in VALUES
giá trị mặc định của cột
Giá trị mặc định dạng hằng được sao chép vào hàng.
Dòng báo cáo: default_keyword_filled
DEFAULT in VALUES without a literal default
NULL
Không có giá trị nào để sao chép.
Dòng báo cáo: default_keyword_null
REPLACE and INSERT IGNORE
hàng thường
Bản dump có một hàng cho mỗi khóa, nên các hàng vẫn giống nhau.
Dòng báo cáo: replace_as_insert
types IntoSQL doesn't know
LONGBLOB
Blob chứa được byte của mọi giá trị; hãy đổi kiểu sau khi nạp.
Dòng báo cáo: unknown_type
values that don't fit their column
NULL
Bản dump bị hỏng hoặc viết tay có thể chứa giá trị mà cột không chứa được; chúng trở thành NULL để phần còn lại được nạp.
Dòng báo cáo: invalid_value_null
unreadable geometries
NULL
Byte không phải dữ liệu hình học thì không lưu được dưới dạng hình học.
Dòng báo cáo: bad_geometry
TIMESTAMP
được giữ, nạp theo múi giờ bản dump nêu
Tập lệnh đặt cùng múi giờ mà bản dump đã dùng, nên mọi thời điểm đều giữ nguyên.
VECTOR(n) (MariaDB 11.7+)
json với các số thực dưới dạng mảng
MySQL 5.7 và 8.0 không có kiểu vector; mảng JSON giữ mọi số thực trên mọi phiên bản.
Dòng báo cáo: type_replaced
| Trong MariaDB | Trong MySQL | Dòng báo cáo |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (utf8mb4_bin cho collation nhị phân)MySQL không biết các collation mới hơn, lỗi khiến hầu hết bản dump MySQL 8 không nạp được ở nơi khác. unicode_520 bám sát nhất cùng quy tắc Unicode. | collation_replaced |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | được giữTập lệnh nạp với ALLOW_INVALID_DATES và không có NO_ZERO_DATE, nên MySQL giữ đúng các giá trị của nguồn. | |
| TIME | TIME, kể cả khoảng thời gianCùng kiểu, cùng phạm vi. | |
| TINYINT(1), BOOL | TINYINT(1)Cùng kiểu, cùng giá trị. | |
| UNSIGNED and ZEROFILL | được giữCùng các kiểu. | |
| ENUM and SET, the '' error value included | được giữCùng các kiểu; tập lệnh nạp không ở chế độ nghiêm ngặt, nên giá trị lỗi được nạp nguyên trạng. | |
| JSON | JSONMySQL đọc cùng văn bản JSON. | |
| NUL bytes in text | được giữGiá trị được sao chép với cùng chuỗi thoát mà nguồn đã dùng. | |
| AUTO_INCREMENT | AUTO_INCREMENT với bộ đếm của bảngBộ đếm tiếp tục từ chỗ nguồn dừng lại, kể cả bộ đếm theo nhóm của MyISAM. | |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | một chỉ mục trên cột và một bộ đếm cho cả bảngInnoDB chỉ đếm một cột khi nó đứng đầu một chỉ mục, và đếm một lần cho cả bảng. | myisam_group_autoincrement |
| ON UPDATE CURRENT_TIMESTAMP | được giữCùng mệnh đề, với phần giây lẻ của cột. | |
| generated columns | VIRTUAL hoặc STORED như trong nguồnCùng công thức, được chuyển đổi từng thành phần. | |
| generated columns with functions IntoSQL doesn't read | một cột thườngCông thức IntoSQL không đọc được để lại một cột thường và một dòng trong báo cáo. | generated_not_translated |
| INVISIBLE columns | cột thườngMySQL có cột ẩn từ 8.0.23, MariaDB từ 10.3. | invisible_column |
| CHECK constraints | được giữ (MySQL 5.7 phân tích rồi bỏ qua chúng)Cùng các ràng buộc kiểm tra, được chuyển đổi từng thành phần. | |
| CHECK constraints with functions IntoSQL doesn't read | không được tạoRàng buộc kiểm tra IntoSQL không đọc được sẽ bị bỏ và được báo cáo. | check_skipped |
| CHECK ... NOT ENFORCED | không được tạoMySQL 5.7 và MariaDB không thể giữ một ràng buộc kiểm tra mà không áp dụng nó, và các hàng có thể vi phạm nó. | check_not_enforced |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | không có giá trị mặc địnhMySQL nhận chúng từ 8.0.13; tập lệnh nạp trên 5.7, nên chúng bị bỏ và được báo cáo. MariaDB nhận chúng. | default_not_translated |
| functional indexes, KEY ((expr)) | không được tạoMySQL lập chỉ mục trên biểu thức từ 8.0.13 và MariaDB hoàn toàn không; một cột tính toán có chỉ mục làm được điều tương tự. | index_skipped |
| keys and indexes on a prefix, c(20) | được giữCùng chỉ mục. | |
| FULLTEXT indexes | được giữCùng chỉ mục; MATCH ... AGAINST hoạt động như trước. | |
| SPATIAL indexes | được giữCùng chỉ mục. | |
| foreign keys | được giữ, nạp với FOREIGN_KEY_CHECKS=0Cùng các khóa; các hàng được nạp như từ bản dump nguồn. | |
| GEOMETRY, POINT, POLYGON... | được giữ, kèm SRID của từng giá trịCác byte hình học gốc của máy chủ được sao chép, kể cả SRID. | |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36)MySQL không có các kiểu này; văn bản MariaDB ghi cho chúng được giữ. | type_replaced |
| BINARY, VARBINARY, BLOB | được giữByte vẫn là byte. | |
| PARTITION BY | một bảngCác hàng giữ nguyên; hãy phân vùng lại bảng nếu cần. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | bảng chứa các hàng hiện tạiBản dump chỉ chứa các hàng hiện tại; MySQL không có system versioning. | system_versioning_dropped |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDBMySQL không có engine nào trong số này. Mọi engine khác được giữ. | engine_dropped |
| CREATE SEQUENCE (MariaDB) | không được tạoMySQL không có sequence. | sequence_not_converted |
| views, triggers, procedures, functions and events | được liệt kê trong báo cáoChúng được liệt kê để bạn tạo lại; mã của chúng thường nêu definer và các tính năng của máy chủ. | not_converted_objects |
| NOT NULL columns with values that become NULL | bỏ NOT NULLCột có giá trị phải chuyển thành NULL không thể giữ NOT NULL, nếu không quá trình nạp sẽ dừng. | not_null_relaxed |
| text that isn't valid in its character set | byte lỗi thành ký tự thay thếTập lệnh là UTF-8; byte không hợp lệ sẽ làm dừng quá trình nạp. | invalid_utf8_replaced |
| text decoded twice (ñ) | sao chép nguyên trạngBản dump chứa đúng các ký tự này, nên chúng được sao chép; báo cáo chỉ ra chúng. | mojibake_suspected |
| dumps without CREATE TABLE | kiểu suy ra từ giá trịBản dump tạo với --no-create-info chỉ có các hàng, nên kiểu được suy ra từ giá trị. | no_schema |
| geometries in a dump without CREATE TABLE | GEOMETRYĐịnh dạng hình học của MySQL được nhận diện từ giá trị. | |
| SET NAMES utf8 from utf8mb4 tables | được chuyển đổi, kèm cảnh báomysqldump của MySQL 5.x mặc định ghi utf8 3 byte và thay mọi emoji bằng dấu chấm hỏi trước khi bất kỳ trình chuyển đổi nào thấy tệp. | dump_lost_four_byte_chars |
| dumps without SET NAMES whose text isn't UTF-8 | đọc dưới dạng Latin-1 (Windows-1252)latin1 của MySQL là Windows-1252, bảng mã thường gặp của những bản dump như vậy. | charset_guessed |
| sjis, cp932, gbk, big5 dumps | đọc dưới dạng UTF-8, kèm cảnh báoCác bảng mã này chưa được giải mã. | unsupported_charset |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | được tính ra giá trịMột số công cụ dump ghi giá trị dưới dạng các lệnh gọi này; chúng được đọc thành giá trị mà chúng tạo ra. | |
| other expressions in rows | NULLTrình chuyển đổi không chạy cơ sở dữ liệu thì không tính được chúng. | expression_value |
| DEFAULT in VALUES | giá trị mặc định của cộtGiá trị mặc định dạng hằng được sao chép vào hàng. | default_keyword_filled |
| DEFAULT in VALUES without a literal default | NULLKhông có giá trị nào để sao chép. | default_keyword_null |
| REPLACE and INSERT IGNORE | hàng thườngBản dump có một hàng cho mỗi khóa, nên các hàng vẫn giống nhau. | replace_as_insert |
| types IntoSQL doesn't know | LONGBLOBBlob chứa được byte của mọi giá trị; hãy đổi kiểu sau khi nạp. | unknown_type |
| values that don't fit their column | NULLBản dump bị hỏng hoặc viết tay có thể chứa giá trị mà cột không chứa được; chúng trở thành NULL để phần còn lại được nạp. | invalid_value_null |
| unreadable geometries | NULLByte không phải dữ liệu hình học thì không lưu được dưới dạng hình học. | bad_geometry |
| TIMESTAMP | được giữ, nạp theo múi giờ bản dump nêuTập lệnh đặt cùng múi giờ mà bản dump đã dùng, nên mọi thời điểm đều giữ nguyên. | |
| VECTOR(n) (MariaDB 11.7+) | json với các số thực dưới dạng mảngMySQL 5.7 và 8.0 không có kiểu vector; mảng JSON giữ mọi số thực trên mọi phiên bản. | type_replaced |
Nạp tập lệnh vào MySQL
Tập lệnh tạo bảng, sao chép các hàng, rồi thêm khóa, chỉ mục và khóa ngoại, nên nạp nhanh và dừng ở lỗi đầu tiên.
mysql --default-character-set=utf8mb4 mydb < mariadb.mysql.sqlKhóa ngoại được tạo đúng như bản dump khai báo, với FOREIGN_KEY_CHECKS=0 trong khi nạp các hàng, nên hàng trỏ tới hàng không tồn tại không làm dừng quá trình nạp.
Với bản dump lớn, hãy chạy client trên cùng máy với máy chủ, và tăng max_allowed_packet nếu một hàng rất lớn.
IntoSQL Pro nạp tệp thẳng vào MySQL từ ứng dụng máy tính hoặc dòng lệnh, không cần tạo tập lệnh.
Tạo bản dump MariaDB để có kết quả tốt nhất
Trình chuyển đổi đọc những gì bản dump chứa. Các tùy chọn sau giữ lại nhiều dữ liệu hơn trong đó:
- --default-character-set=utf8mb4 giữ emoji và các ký tự 4 byte khác, vốn bị bản dump utf8mb3 làm mất trước khi trình chuyển đổi nhìn thấy.
- --hex-blob ghi cột nhị phân và giá trị VECTOR dưới dạng thập lục phân, không bị hỏng khi sao chép giữa các hệ thống.
- --routines --triggers --events thêm các đối tượng đó vào bản dump, để báo cáo có thể liệt kê chúng.
Những gì không được chuyển đổi
Khung nhìn, trình kích hoạt, thủ tục lưu trữ, hàm và sự kiện được viết bằng ngôn ngữ riêng của MariaDB. Chúng được liệt kê theo tên trong báo cáo, không bao giờ bị bỏ âm thầm, để bạn viết lại cho MySQL.
Câu hỏi về MariaDB sang MySQL
Chưa có câu trả lời ở đây? Hãy viết cho chúng tôi từ trang liên hệ, sẽ có người trả lời. Trang liên hệ
Bản dump của tôi có bị tải lên không?
Không. Trình chuyển đổi chạy trong trình duyệt và đọc bản dump từ ổ đĩa theo từng phần, nên nó không bao giờ rời khỏi máy tính của bạn. Ứng dụng máy tính và dòng lệnh cũng chuyển đổi ngay trên máy tính của bạn.
Bản dump có thể lớn đến đâu?
Trình chuyển đổi không bao giờ giữ toàn bộ bản dump trong bộ nhớ: nó đọc tệp hai lần, theo từng đoạn, và ghi tập lệnh trong lúc đọc. Bản dump nhiều gigabyte vẫn chuyển đổi được trong trình duyệt, trong ứng dụng máy tính và bằng dòng lệnh.
Bản dump có thể đến từ những phiên bản MariaDB nào?
Bản dump từ mariadb-dump và mysqldump trên MariaDB 10.3 đến 12, với một INSERT mỗi bảng hoặc một INSERT mỗi hàng. Mọi bản dump thử nghiệm đến từ MariaDB 10.11, 11.4 và 11.8 và được so với nguồn từng ô một.
Cột UUID, INET6, JSON và VECTOR có được giữ không?
UUID thành char(36), INET4 và INET6 thành varchar, JSON thành json, và VECTOR thành mảng json chứa các số thực của nó, vì MySQL 5.7 và 8.0 không có các kiểu này.
Giá trị AUTO_INCREMENT và sequence có được giữ không?
AUTO_INCREMENT giữ nguyên và tiếp tục từ chỗ bản dump dừng lại. MySQL không có sequence, nên chúng và các giá trị mặc định lấy từ chúng được ghi trong báo cáo.
Còn thủ tục lưu trữ và trình kích hoạt thì sao?
Chúng được liệt kê theo tên trong báo cáo và không được chuyển đổi, để bạn kiểm tra từng cái với MySQL trước khi tạo lại.
Tập lệnh nạp được trên những phiên bản MySQL nào?
MySQL 5.7 trở lên. Mọi bản dump thử nghiệm đều nạp được trên 5.7 và 9, và dừng ở lỗi đầu tiên nếu có sự cố.