---
title: "Move a MariaDB dump to another version"
description: "Convert a MariaDB 10.3 to 12 dump into a script that loads on MariaDB 10.11 and later, with the same tables, keys, sequences and data, and a report of every change."
canonical: https://intosql.com/mariadb-to-mariadb
last_updated: 2026-10-15
---

# Move a MariaDB dump to another version

Drop a dump from mariadb-dump, mysqldump, phpMyAdmin or Adminer, as .sql or .sql.gz, and download a script that loads on MariaDB 10.11 and later. UUID, INET4, INET6, JSON and sequences stay as they are, VECTOR becomes a JSON array of its floats for versions before 11.7, and every change is listed in the report.

[MariaDB to MariaDB migration guide](https://intosql.com/docs/migrations/mariadb-to-mariadb)

[MariaDB to MariaDB data types](https://intosql.com/docs/types/mariadb-to-mariadb)

## What changes between the file and the script

Each row is a rule the converter applies, with the report line it writes when the rule changes something in your data.

| In the file | In the script | Report line |
| --- | --- | --- |
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci for utf8mb4_0900_* (utf8mb4_bin for binary ones) | `collation_replaced` |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | kept |  |
| TIME | TIME, durations included |  |
| TINYINT(1), BOOL | TINYINT(1) |  |
| UNSIGNED and ZEROFILL | kept |  |
| ENUM and SET, the '' error value included | kept |  |
| JSON | JSON (LONGTEXT checked by MariaDB) |  |
| NUL bytes in text | kept |  |
| AUTO_INCREMENT | AUTO_INCREMENT with the table's counter |  |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | an index on the column and one counter for the table | `myisam_group_autoincrement` |
| ON UPDATE CURRENT_TIMESTAMP | kept |  |
| generated columns | VIRTUAL or STORED as in the source |  |
| generated columns with functions IntoSQL doesn't read | a plain column | `generated_not_translated` |
| INVISIBLE columns | INVISIBLE columns |  |
| CHECK constraints | kept |  |
| CHECK constraints with functions IntoSQL doesn't read | not created | `check_skipped` |
| CHECK ... NOT ENFORCED | not created | `check_not_enforced` |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | kept | `default_not_translated` |
| functional indexes, KEY ((expr)) | not created | `index_skipped` |
| keys and indexes on a prefix, c(20) | kept |  |
| FULLTEXT indexes | kept |  |
| SPATIAL indexes | kept |  |
| foreign keys | kept, loaded with FOREIGN_KEY_CHECKS=0 |  |
| GEOMETRY, POINT, POLYGON... | kept, with each value's SRID |  |
| INET4, INET6, UUID (MariaDB) | kept |  |
| BINARY, VARBINARY, BLOB | kept |  |
| PARTITION BY | one table | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | WITH SYSTEM VERSIONING, starting from the current rows |  |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | kept |  |
| CREATE SEQUENCE (MariaDB) | CREATE SEQUENCE with its next value |  |
| views, triggers, procedures, functions and events | listed in the report | `not_converted_objects` |
| NOT NULL columns with values that become NULL | NOT NULL dropped | `not_null_relaxed` |
| text that isn't valid in its character set | the bad bytes as the replacement character | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copied as it is | `mojibake_suspected` |
| dumps without CREATE TABLE | types read from the values | `no_schema` |
| geometries in a dump without CREATE TABLE | GEOMETRY |  |
| SET NAMES utf8 from utf8mb4 tables | converted, with a warning | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | read as Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | read as UTF-8, with a warning | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | evaluated |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | the column's default value | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | plain rows | `replace_as_insert` |
| types IntoSQL doesn't know | LONGBLOB | `unknown_type` |
| values that don't fit their column | NULL | `invalid_value_null` |
| unreadable geometries | NULL | `bad_geometry` |
| TIMESTAMP | kept, loaded in the time zone the dump states |  |
| VECTOR(n) (MariaDB 11.7+) | json with the floats as an array | `type_replaced` |

## Load the script into MariaDB

The script creates the tables, copies the rows, then adds keys, indexes and foreign keys, so it loads fast and stops at the first error.

```shell
mariadb --default-character-set=utf8mb4 mydb < mariadb.mariadb.sql
```

Foreign keys are created as the dump declares them, with FOREIGN_KEY_CHECKS=0 while the rows load, as mysqldump does.

For a large dump, run the client on the same machine as the server, and raise max_allowed_packet if a single row is very large.

IntoSQL Pro loads the file straight into MariaDB from the desktop app or the command line, without writing a script.

## Dump MariaDB for the best result

The converter reads what the dump holds. These options keep more of your data in it:

- --default-character-set=utf8mb4 keeps emoji and other 4-byte characters, which a utf8mb3 dump loses before the converter sees it.
- --hex-blob writes binary columns and VECTOR values as hexadecimal, which survives copying between systems.
- --routines --triggers --events add those objects to the dump, so the report can list them.

## What isn't converted

Views, triggers, procedures, functions and other objects written in MariaDB's own language are listed in the report by name, never dropped silently, so you can check each one against the MariaDB version you load into before recreating it.

## Questions about moving MariaDB between versions

### Is my dump uploaded?

No. The converter runs in your browser and reads the dump from your disk in pieces, so it never leaves your computer. The desktop app and the command line convert on your computer too.

### How large can the dump be?

The converter never holds the whole dump in memory: it reads the file twice, by ranges, and writes the script as it goes. Multi-gigabyte dumps convert in the browser, in the desktop app and with the command line.

### Which MariaDB versions can the dump come from?

Dumps from mariadb-dump and mysqldump on MariaDB 10.3 to 12, with one INSERT per table or one per row. Every test dump comes from MariaDB 10.11, 11.4 and 11.8 and is compared with its source cell by cell.

### Are UUID, INET6, JSON and VECTOR columns kept?

UUID, INET4, INET6 and JSON stay as they are. VECTOR becomes a JSON array of its floats, because MariaDB before 11.7 has no vector type; VEC_FromText reads it back.

### Are AUTO_INCREMENT values and sequences kept?

Yes. AUTO_INCREMENT and sequences stay as they are, and defaults that draw from a sequence keep drawing from it.

### What about stored procedures and triggers?

They are listed in the report by name and not converted, so you can check each one against the MariaDB you load into before recreating it.

### Which MariaDB versions does the script load on?

MariaDB 10.11 and later, whichever version wrote the dump. Every test dump loads on 10.11 and 11.4.

## From MariaDB

- [MariaDB to PostgreSQL](https://intosql.com/mariadb-to-postgresql)
- [MariaDB to MySQL](https://intosql.com/mariadb-to-mysql)
- [MariaDB to SQLite](https://intosql.com/mariadb-to-sqlite)
- [MariaDB to SQL Server](https://intosql.com/mariadb-to-sql-server)
- [MariaDB to Oracle](https://intosql.com/mariadb-to-oracle)

## Into MariaDB

- [MySQL to MariaDB](https://intosql.com/mysql-to-mariadb)
- [PostgreSQL to MariaDB](https://intosql.com/postgresql-to-mariadb)
- [SQL Server to MariaDB](https://intosql.com/sql-server-to-mariadb)
- [SQLite to MariaDB](https://intosql.com/sqlite-to-mariadb)
- [Oracle to MariaDB](https://intosql.com/oracle-to-mariadb)

## Guide and every pair

- [MariaDB to MariaDB migration guide](https://intosql.com/docs/migrations/mariadb-to-mariadb)
- [MariaDB to MariaDB data types](https://intosql.com/docs/types/mariadb-to-mariadb)
- [Every database pair](https://intosql.com/database-migration)
