Chuyển đến nội dung
Trang chủ IntoSQL

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.

Tệp của bạn
sqlshop_2024_mariadb.sqlTệp mẫu, 6,6 kB
Cơ sở dữ liệu của bạn

Đã chuyển đổi 18 hàng, 4 bản sửa, không hàng nào bị từ chối

Hiển thị

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
    idint(10) 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
    last_ipvarchar(39)
  • orders10 hàng2
    12 cột
    idint(10) unsigned not null
    customer_idint(10) unsigned not null
    statusenum('pending','paid','shipped','cancelled') not null
    totaldecimal(10,2) not null
    itemssmallint(5) unsigned not null
    ordered_atdatetime not null
    shipped_atdatetime
    notevarchar(255)
    order_refchar(36) not null
    invoiceint(11) not null
    detailsjson
    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(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

  1. 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.
  2. "last_ip" của customers là inet6, kiểu MySQL không có, nên là varchar(39) với cùng giá trị.
  3. 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.
  4. "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 MariaDBTrong MySQLDòng báo cáo
utf8mb4_0900_* and utf8mb4_uca1400_* collationsutf8mb4_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.
TIMETIME, kể cả khoảng thời gianCùng kiểu, cùng phạm vi.
TINYINT(1), BOOLTINYINT(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.
JSONJSONMySQL đọ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_INCREMENTAUTO_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 dumpmộ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 columnsVIRTUAL 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 readmộ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 columnscộ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 readkhô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 ENFORCEDkhô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 GEOMETRYkhô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 BYmộ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 NULLbỏ 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 setbyte 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 TABLEkiể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 TABLEGEOMETRYĐị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 rowsNULLTrì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 VALUESgiá 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 defaultNULLKhông có giá trị nào để sao chép.default_keyword_null
REPLACE and INSERT IGNOREhà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 knowLONGBLOBBlob 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 columnNULLBả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 geometriesNULLByte 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.sql

Khó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ố.