Zum Inhalt springen
IntoSQL-Startseite

MariaDB in MySQL umwandeln

Leg einen Dump aus mariadb-dump, mysqldump, phpMyAdmin oder Adminer ab, als .sql oder .sql.gz, und lade ein MySQL-Skript mit denselben Tabellen, Schlüsseln, Indizes und Daten herunter. Jeder Wert, den MySQL nicht unverändert aufnehmen kann, und jedes Objekt, das es nicht übernimmt, steht im Bericht.

Deine Datei
sqlshop_2024_mariadb.sqlBeispieldatei, 6,6 kB
Deine Datenbank

18 Zeilen konvertiert, 4 Korrekturen, keine abgelehnt

Anzeigen

Tabellen in shop_2024_mariadb.sqlMariaDB-11.8.9-MariaDB-ubu2404-Dump · erstellt mit mariadb-dump · utf8mb4

  • customers8 Zeilen2
    8 Spalten
    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 Zeilen2
    12 Spalten
    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;

Korrekturen

  1. customers nutzt die Kollation utf8mb4_uca1400_ai_ci, die MySQL nicht hat, daher nutzt es utf8mb4_unicode_520_ci; Text kann etwas anders sortiert und verglichen werden.
  2. "last_ip" von customers ist inet6, was MySQL nicht hat, daher ist sie varchar(39) mit denselben Werten.
  3. orders nutzt die Kollation utf8mb4_uca1400_ai_ci, die MySQL nicht hat, daher nutzt es utf8mb4_unicode_520_ci; Text kann etwas anders sortiert und verglichen werden.
  4. "order_ref" von orders ist uuid, was MySQL nicht hat, daher ist sie char(36) mit denselben Werten.

Zu prüfen

  • 1 Sequenz wird nicht angelegt; MySQL hat keine Sequenzen. Speichere den nächsten Wert in einer Tabelle, wenn deine Anwendung ihn braucht.
  • Der Standardwert von "invoice" in orders lässt sich nicht für MySQL schreiben (a sequence), daher hat die Spalte keinen Standardwert. Füge den Standardwert von Hand hinzu, wenn neue Zeilen ihn brauchen.

Deine Datei wird auf diesem Computer umgewandelt und nie hochgeladen.

Weitere Beispiele:

Was sich von MariaDB zu MySQL ändert

Jede Zeile ist eine Regel, die der Konverter anwendet, mit der Berichtszeile, die er schreibt, wenn die Regel etwas an deinen Daten ändert.

  • utf8mb4_0900_* and utf8mb4_uca1400_* collations

    utf8mb4_unicode_520_ci (utf8mb4_bin für binäre)

    MySQL kennt die neueren Kollationen nicht, der Fehler, an dem die meisten MySQL-8-Dumps anderswo scheitern. unicode_520 folgt denselben Unicode-Regeln am genauesten.

    Berichtszeile: collation_replaced

  • zero, partial or impossible dates (0000-00-00, 2024-02-30)

    beibehalten

    Das Skript lädt mit ALLOW_INVALID_DATES und ohne NO_ZERO_DATE, daher behält MySQL dieselben Werte wie die Quelle.

  • TIME

    TIME, einschließlich Dauern

    Derselbe Typ mit demselben Bereich.

  • TINYINT(1), BOOL

    TINYINT(1)

    Derselbe Typ mit denselben Werten.

  • UNSIGNED and ZEROFILL

    beibehalten

    Dieselben Typen.

  • ENUM and SET, the '' error value included

    beibehalten

    Dieselben Typen; das Skript lädt ohne Strict Mode, daher lädt der Fehlerwert unverändert.

  • JSON

    JSON

    MySQL liest denselben JSON-Text.

  • NUL bytes in text

    beibehalten

    Der Wert wird mit demselben Escape kopiert, das die Quelle nutzte.

  • AUTO_INCREMENT

    AUTO_INCREMENT mit dem Zähler der Tabelle

    Der Zähler macht dort weiter, wo die Quelle aufgehört hat, einschließlich der Gruppenzähler von MyISAM.

  • MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump

    ein Index auf der Spalte und ein Zähler für die Tabelle

    InnoDB zählt eine Spalte nur, wenn sie einen Index anführt, und einmal für die ganze Tabelle.

    Berichtszeile: myisam_group_autoincrement

  • ON UPDATE CURRENT_TIMESTAMP

    beibehalten

    Dieselbe Klausel, mit den Sekundenbruchteilen der Spalte.

  • generated columns

    VIRTUAL oder STORED wie in der Quelle

    Dieselbe Formel, Term für Term übersetzt.

  • generated columns with functions IntoSQL doesn't read

    eine normale Spalte

    Eine Formel, die IntoSQL nicht lesen kann, hinterlässt eine normale Spalte und eine Zeile im Bericht.

    Berichtszeile: generated_not_translated

  • INVISIBLE columns

    normale Spalten

    MySQL hat unsichtbare Spalten ab 8.0.23, MariaDB ab 10.3.

    Berichtszeile: invisible_column

  • CHECK constraints

    beibehalten (MySQL 5.7 parst und ignoriert sie)

    Dieselben CHECK-Bedingungen, Term für Term übersetzt.

  • CHECK constraints with functions IntoSQL doesn't read

    nicht angelegt

    Eine CHECK-Bedingung, die IntoSQL nicht lesen kann, wird weggelassen und gemeldet.

    Berichtszeile: check_skipped

  • CHECK ... NOT ENFORCED

    nicht angelegt

    MySQL 5.7 und MariaDB können eine CHECK-Bedingung nicht behalten, ohne sie anzuwenden, und die Zeilen können sie verletzen.

    Berichtszeile: check_not_enforced

  • expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY

    kein Standardwert

    MySQL nimmt sie ab 8.0.13 an; das Skript lädt auf 5.7, daher werden sie weggelassen und gemeldet. MariaDB nimmt sie an.

    Berichtszeile: default_not_translated

  • functional indexes, KEY ((expr))

    nicht angelegt

    MySQL indiziert Ausdrücke ab 8.0.13 und MariaDB gar nicht; eine generierte Spalte mit Index leistet dasselbe.

    Berichtszeile: index_skipped

  • keys and indexes on a prefix, c(20)

    beibehalten

    Derselbe Index.

  • FULLTEXT indexes

    beibehalten

    Derselbe Index; MATCH ... AGAINST funktioniert wie zuvor.

  • SPATIAL indexes

    beibehalten

    Derselbe Index.

  • foreign keys

    beibehalten, geladen mit FOREIGN_KEY_CHECKS=0

    Dieselben Schlüssel; die Zeilen laden wie aus dem Quell-Dump.

  • GEOMETRY, POINT, POLYGON...

    beibehalten, mit der SRID jedes Werts

    Die eigenen Geometrie-Bytes des Servers werden kopiert, einschließlich SRID.

  • INET4, INET6, UUID (MariaDB)

    varchar(15), varchar(39), char(36)

    MySQL hat solche Typen nicht; der Text, den MariaDB für sie schreibt, bleibt erhalten.

    Berichtszeile: type_replaced

  • BINARY, VARBINARY, BLOB

    beibehalten

    Bytes bleiben Bytes.

  • PARTITION BY

    eine Tabelle

    Die Zeilen bleiben dieselben; partitioniere die Tabelle neu, wenn nötig.

    Berichtszeile: partitions_dropped

  • WITH SYSTEM VERSIONING (MariaDB)

    eine Tabelle mit den aktuellen Zeilen

    Ein Dump enthält nur die aktuellen Zeilen; MySQL hat keine Systemversionierung.

    Berichtszeile: system_versioning_dropped

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

    InnoDB

    MySQL hat keine dieser Engines. Jede andere Engine bleibt erhalten.

    Berichtszeile: engine_dropped

  • CREATE SEQUENCE (MariaDB)

    nicht angelegt

    MySQL hat keine Sequenzen.

    Berichtszeile: sequence_not_converted

  • views, triggers, procedures, functions and events

    im Bericht aufgeführt

    Sie werden aufgeführt, damit du sie neu anlegst; ihr Code nennt oft seinen Definer und Serverfunktionen.

    Berichtszeile: not_converted_objects

  • NOT NULL columns with values that become NULL

    NOT NULL entfernt

    Eine Spalte, deren Werte NULL werden mussten, kann NOT NULL nicht behalten, sonst würde das Laden abbrechen.

    Berichtszeile: not_null_relaxed

  • text that isn't valid in its character set

    die fehlerhaften Bytes als Ersatzzeichen

    Das Skript ist UTF-8; Bytes, die es nicht sind, würden das Laden abbrechen.

    Berichtszeile: invalid_utf8_replaced

  • text decoded twice (ñ)

    unverändert kopiert

    Der Dump enthält genau diese Zeichen, daher werden sie kopiert; der Bericht weist auf sie hin.

    Berichtszeile: mojibake_suspected

  • dumps without CREATE TABLE

    Typen aus den Werten gelesen

    Ein mit --no-create-info erstellter Dump enthält nur Zeilen, daher kommen die Typen aus den Werten.

    Berichtszeile: no_schema

  • geometries in a dump without CREATE TABLE

    GEOMETRY

    Das Geometrieformat von MySQL wird an den Werten erkannt.

  • SET NAMES utf8 from utf8mb4 tables

    konvertiert, mit einer Warnung

    mysqldump aus MySQL 5.x schreibt standardmäßig 3-Byte-utf8 und ersetzt jedes Emoji durch ein Fragezeichen, bevor ein Konverter die Datei sieht.

    Berichtszeile: dump_lost_four_byte_chars

  • dumps without SET NAMES whose text isn't UTF-8

    als Latin-1 (Windows-1252) gelesen

    latin1 in MySQL ist Windows-1252, die übliche Kodierung solcher Dumps.

    Berichtszeile: charset_guessed

  • sjis, cp932, gbk, big5 dumps

    als UTF-8 gelesen, mit einer Warnung

    Diese Kodierungen werden noch nicht dekodiert.

    Berichtszeile: unsupported_charset

  • UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows

    ausgewertet

    Manche Dump-Werkzeuge schreiben Werte als solche Aufrufe; sie werden als die Werte gelesen, die sie ergeben.

  • other expressions in rows

    NULL

    Ein Konverter, der keine Datenbank ausführt, kann sie nicht auswerten.

    Berichtszeile: expression_value

  • DEFAULT in VALUES

    der Standardwert der Spalte

    Ein literaler Standardwert wird in die Zeile kopiert.

    Berichtszeile: default_keyword_filled

  • DEFAULT in VALUES without a literal default

    NULL

    Es gibt keinen Wert zum Kopieren.

    Berichtszeile: default_keyword_null

  • REPLACE and INSERT IGNORE

    normale Zeilen

    Ein Dump hat eine Zeile pro Schlüssel, daher sind die Zeilen dieselben.

    Berichtszeile: replace_as_insert

  • types IntoSQL doesn't know

    LONGBLOB

    Ein Blob nimmt die Bytes jedes Werts auf; ändere den Typ nach dem Laden.

    Berichtszeile: unknown_type

  • values that don't fit their column

    NULL

    Ein beschädigter oder von Hand geschriebener Dump kann Werte enthalten, die seine Spalte nicht aufnehmen kann; sie werden NULL, damit der Rest lädt.

    Berichtszeile: invalid_value_null

  • unreadable geometries

    NULL

    Bytes, die keine Geometrie sind, lassen sich nicht als solche speichern.

    Berichtszeile: bad_geometry

  • TIMESTAMP

    beibehalten, geladen in der Zeitzone, die der Dump angibt

    Das Skript setzt dieselbe Zeitzone wie der Dump, daher bleibt jeder Zeitpunkt derselbe.

  • VECTOR(n) (MariaDB 11.7+)

    json mit den Gleitkommazahlen als Array

    MySQL 5.7 und 8.0 haben keinen vector-Typ; ein JSON-Array behält jede Gleitkommazahl auf jeder Version.

    Berichtszeile: type_replaced

In MariaDBIn MySQLBerichtszeile
utf8mb4_0900_* and utf8mb4_uca1400_* collationsutf8mb4_unicode_520_ci (utf8mb4_bin für binäre)MySQL kennt die neueren Kollationen nicht, der Fehler, an dem die meisten MySQL-8-Dumps anderswo scheitern. unicode_520 folgt denselben Unicode-Regeln am genauesten.collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)beibehaltenDas Skript lädt mit ALLOW_INVALID_DATES und ohne NO_ZERO_DATE, daher behält MySQL dieselben Werte wie die Quelle.
TIMETIME, einschließlich DauernDerselbe Typ mit demselben Bereich.
TINYINT(1), BOOLTINYINT(1)Derselbe Typ mit denselben Werten.
UNSIGNED and ZEROFILLbeibehaltenDieselben Typen.
ENUM and SET, the '' error value includedbeibehaltenDieselben Typen; das Skript lädt ohne Strict Mode, daher lädt der Fehlerwert unverändert.
JSONJSONMySQL liest denselben JSON-Text.
NUL bytes in textbeibehaltenDer Wert wird mit demselben Escape kopiert, das die Quelle nutzte.
AUTO_INCREMENTAUTO_INCREMENT mit dem Zähler der TabelleDer Zähler macht dort weiter, wo die Quelle aufgehört hat, einschließlich der Gruppenzähler von MyISAM.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dumpein Index auf der Spalte und ein Zähler für die TabelleInnoDB zählt eine Spalte nur, wenn sie einen Index anführt, und einmal für die ganze Tabelle.myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMPbeibehaltenDieselbe Klausel, mit den Sekundenbruchteilen der Spalte.
generated columnsVIRTUAL oder STORED wie in der QuelleDieselbe Formel, Term für Term übersetzt.
generated columns with functions IntoSQL doesn't readeine normale SpalteEine Formel, die IntoSQL nicht lesen kann, hinterlässt eine normale Spalte und eine Zeile im Bericht.generated_not_translated
INVISIBLE columnsnormale SpaltenMySQL hat unsichtbare Spalten ab 8.0.23, MariaDB ab 10.3.invisible_column
CHECK constraintsbeibehalten (MySQL 5.7 parst und ignoriert sie)Dieselben CHECK-Bedingungen, Term für Term übersetzt.
CHECK constraints with functions IntoSQL doesn't readnicht angelegtEine CHECK-Bedingung, die IntoSQL nicht lesen kann, wird weggelassen und gemeldet.check_skipped
CHECK ... NOT ENFORCEDnicht angelegtMySQL 5.7 und MariaDB können eine CHECK-Bedingung nicht behalten, ohne sie anzuwenden, und die Zeilen können sie verletzen.check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRYkein StandardwertMySQL nimmt sie ab 8.0.13 an; das Skript lädt auf 5.7, daher werden sie weggelassen und gemeldet. MariaDB nimmt sie an.default_not_translated
functional indexes, KEY ((expr))nicht angelegtMySQL indiziert Ausdrücke ab 8.0.13 und MariaDB gar nicht; eine generierte Spalte mit Index leistet dasselbe.index_skipped
keys and indexes on a prefix, c(20)beibehaltenDerselbe Index.
FULLTEXT indexesbeibehaltenDerselbe Index; MATCH ... AGAINST funktioniert wie zuvor.
SPATIAL indexesbeibehaltenDerselbe Index.
foreign keysbeibehalten, geladen mit FOREIGN_KEY_CHECKS=0Dieselben Schlüssel; die Zeilen laden wie aus dem Quell-Dump.
GEOMETRY, POINT, POLYGON...beibehalten, mit der SRID jedes WertsDie eigenen Geometrie-Bytes des Servers werden kopiert, einschließlich SRID.
INET4, INET6, UUID (MariaDB)varchar(15), varchar(39), char(36)MySQL hat solche Typen nicht; der Text, den MariaDB für sie schreibt, bleibt erhalten.type_replaced
BINARY, VARBINARY, BLOBbeibehaltenBytes bleiben Bytes.
PARTITION BYeine TabelleDie Zeilen bleiben dieselben; partitioniere die Tabelle neu, wenn nötig.partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)eine Tabelle mit den aktuellen ZeilenEin Dump enthält nur die aktuellen Zeilen; MySQL hat keine Systemversionierung.system_versioning_dropped
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)InnoDBMySQL hat keine dieser Engines. Jede andere Engine bleibt erhalten.engine_dropped
CREATE SEQUENCE (MariaDB)nicht angelegtMySQL hat keine Sequenzen.sequence_not_converted
views, triggers, procedures, functions and eventsim Bericht aufgeführtSie werden aufgeführt, damit du sie neu anlegst; ihr Code nennt oft seinen Definer und Serverfunktionen.not_converted_objects
NOT NULL columns with values that become NULLNOT NULL entferntEine Spalte, deren Werte NULL werden mussten, kann NOT NULL nicht behalten, sonst würde das Laden abbrechen.not_null_relaxed
text that isn't valid in its character setdie fehlerhaften Bytes als ErsatzzeichenDas Skript ist UTF-8; Bytes, die es nicht sind, würden das Laden abbrechen.invalid_utf8_replaced
text decoded twice (ñ)unverändert kopiertDer Dump enthält genau diese Zeichen, daher werden sie kopiert; der Bericht weist auf sie hin.mojibake_suspected
dumps without CREATE TABLETypen aus den Werten gelesenEin mit --no-create-info erstellter Dump enthält nur Zeilen, daher kommen die Typen aus den Werten.no_schema
geometries in a dump without CREATE TABLEGEOMETRYDas Geometrieformat von MySQL wird an den Werten erkannt.
SET NAMES utf8 from utf8mb4 tableskonvertiert, mit einer Warnungmysqldump aus MySQL 5.x schreibt standardmäßig 3-Byte-utf8 und ersetzt jedes Emoji durch ein Fragezeichen, bevor ein Konverter die Datei sieht.dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8als Latin-1 (Windows-1252) gelesenlatin1 in MySQL ist Windows-1252, die übliche Kodierung solcher Dumps.charset_guessed
sjis, cp932, gbk, big5 dumpsals UTF-8 gelesen, mit einer WarnungDiese Kodierungen werden noch nicht dekodiert.unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rowsausgewertetManche Dump-Werkzeuge schreiben Werte als solche Aufrufe; sie werden als die Werte gelesen, die sie ergeben.
other expressions in rowsNULLEin Konverter, der keine Datenbank ausführt, kann sie nicht auswerten.expression_value
DEFAULT in VALUESder Standardwert der SpalteEin literaler Standardwert wird in die Zeile kopiert.default_keyword_filled
DEFAULT in VALUES without a literal defaultNULLEs gibt keinen Wert zum Kopieren.default_keyword_null
REPLACE and INSERT IGNOREnormale ZeilenEin Dump hat eine Zeile pro Schlüssel, daher sind die Zeilen dieselben.replace_as_insert
types IntoSQL doesn't knowLONGBLOBEin Blob nimmt die Bytes jedes Werts auf; ändere den Typ nach dem Laden.unknown_type
values that don't fit their columnNULLEin beschädigter oder von Hand geschriebener Dump kann Werte enthalten, die seine Spalte nicht aufnehmen kann; sie werden NULL, damit der Rest lädt.invalid_value_null
unreadable geometriesNULLBytes, die keine Geometrie sind, lassen sich nicht als solche speichern.bad_geometry
TIMESTAMPbeibehalten, geladen in der Zeitzone, die der Dump angibtDas Skript setzt dieselbe Zeitzone wie der Dump, daher bleibt jeder Zeitpunkt derselbe.
VECTOR(n) (MariaDB 11.7+)json mit den Gleitkommazahlen als ArrayMySQL 5.7 und 8.0 haben keinen vector-Typ; ein JSON-Array behält jede Gleitkommazahl auf jeder Version.type_replaced

Das Skript in MySQL laden

Das Skript legt die Tabellen an, kopiert die Zeilen und fügt dann Schlüssel, Indizes und Fremdschlüssel hinzu, so lädt es schnell und hält beim ersten Fehler an.

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

Fremdschlüssel werden so angelegt, wie der Dump sie deklariert, mit FOREIGN_KEY_CHECKS=0, während die Zeilen laden, daher hält eine Zeile, die auf eine fehlende Zeile verweist, das Laden nicht an.

Führe bei einem großen Dump den Client auf dem Rechner des Servers aus und erhöhe max_allowed_packet, wenn eine einzelne Zeile sehr groß ist.

IntoSQL Pro lädt die Datei aus der Desktop-App oder der Kommandozeile direkt in MySQL, ohne ein Skript zu schreiben.

Den MariaDB-Dump für das beste Ergebnis erstellen

Der Konverter liest, was der Dump enthält. Mit diesen Optionen bleibt mehr von deinen Daten darin:

  • --default-character-set=utf8mb4 bewahrt Emoji und andere 4-Byte-Zeichen, die ein utf8mb3-Dump verliert, bevor der Konverter ihn sieht.
  • --hex-blob schreibt Binärspalten und VECTOR-Werte hexadezimal, was das Kopieren zwischen Systemen übersteht.
  • --routines --triggers --events fügen diese Objekte dem Dump hinzu, damit der Bericht sie auflisten kann.

Was nicht konvertiert wird

Sichten, Trigger, gespeicherte Prozeduren, Funktionen und Ereignisse sind in der eigenen Sprache von MariaDB geschrieben. Sie stehen mit Namen im Bericht und werden nie stillschweigend weggelassen, damit du sie für MySQL neu schreiben kannst.

Fragen zu MariaDB zu MySQL

Keine Antwort gefunden? Schreib uns über die Kontaktseite, und ein Mensch antwortet. Kontaktseite

Wird mein Dump hochgeladen?

Nein. Der Konverter läuft in deinem Browser und liest den Dump stückweise von deiner Festplatte, daher verlässt er nie deinen Computer. Die Desktop-App und die Kommandozeile konvertieren ebenfalls auf deinem Computer.

Wie groß darf der Dump sein?

Der Konverter hält nie den ganzen Dump im Speicher: Er liest die Datei zweimal, in Abschnitten, und schreibt das Skript fortlaufend. Dumps von mehreren Gigabyte werden im Browser, in der Desktop-App und mit der Kommandozeile konvertiert.

Aus welchen MariaDB-Versionen kann der Dump stammen?

Dumps aus mariadb-dump und mysqldump auf MariaDB 10.3 bis 12, mit einem INSERT pro Tabelle oder einem pro Zeile. Jeder Test-Dump stammt aus MariaDB 10.11, 11.4 und 11.8 und wird Zelle für Zelle mit seiner Quelle verglichen.

Bleiben UUID-, INET6-, JSON- und VECTOR-Spalten erhalten?

UUID wird char(36), INET4 und INET6 varchar, JSON json und VECTOR ein json-Array seiner Gleitkommazahlen, weil MySQL 5.7 und 8.0 diese Typen nicht haben.

Bleiben AUTO_INCREMENT-Werte und Sequenzen erhalten?

AUTO_INCREMENT bleibt unverändert und macht dort weiter, wo der Dump aufgehört hat. MySQL hat keine Sequenzen, daher stehen sie und die Standardwerte, die aus ihnen ziehen, im Bericht.

Was ist mit gespeicherten Prozeduren und Triggern?

Sie stehen mit Namen im Bericht und werden nicht konvertiert, damit du jedes Objekt vor dem Neuanlegen mit MySQL abgleichen kannst.

Auf welchen MySQL-Versionen lädt das Skript?

MySQL 5.7 und neuer. Jeder Test-Dump lädt auf 5.7 und 9 und hält beim ersten Fehler an, falls etwas schiefgeht.