# Incompatibilities and Feature Differences Between MariaDB 10.10 and MySQL 8.0

MariaDB maintains high levels of compatibility with MySQL, and most applications that use MySQL will work seamlessly with MariaDB. However, take note of the following incompatibilities and feature differences between [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) and MySQL 8.0. It is based on the versions MySQL 8.0.32 and [MariaDB 10.10.3](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/10.10.3). Note that MySQL 8 is an 'evergreen' release, so features may be added or removed in later releases.

## Storage Engines

In addition to the standard [InnoDB](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/innodb), [MyISAM](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/myisam-storage-engine), [BLACKHOLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/blackhole), [CSV](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/csv), [MEMORY](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/memory-storage-engine), [ARCHIVE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/archive), and [MERGE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/merge) storage engines, the following are also available with [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010):

* [ColumnStore](https://mariadb.com/docs/release-notes/columnstore) utilizes a massively parallel distributed data architecture and is designed for big data scaling to process petabytes of data.
* [MyRocks](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/myrocks), a storage engine with great compression
* [S3 storage engine](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/s3-storage-engine) allows one to archive MariaDB tables in Amazon S3, or any third-party public or private cloud that implements S3 API.
* [Aria](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/aria), MyISAM replacement with better caching.
* [CONNECT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/connect)
* [SEQUENCE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/sequence-storage-engine)
* [Spider](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/spider)
* [SphinxSE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/sphinx-storage-engine)
* [FederatedX](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/federatedx-storage-engine) (drop-in replacement for Federated)
* [OQGRAPH](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/storage-engines/oqgraph-storage-engine)

## Extensions and New Features

The most notable [features available in MariaDB](https://github.com/mariadb-corporation/docs-release-notes/blob/test/kb/en/what-is-in-the-different-mariadb-releases/README.md), but not in MySQL, are:

* [Galera](https://github.com/mariadb-corporation/docs-release-notes/blob/test/kb/en/galera-cluster/README.md) is a standard part of MariaDB Server.
* [Temporal data tables](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/temporal-tables) in the form of:
  * [System-versioned tables](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/temporal-tables/system-versioned-tables) (allow you to query and operate on historic data).
  * [Application-time periods](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/temporal-tables/application-time-periods) (allow you to query and operate on a temporal range of data), including the [WITHOUT OVERLAPS](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/temporal-tables/application-time-periods#without-overlaps) clause.
  * [Bitemporal tables](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/temporal-tables/bitemporal-tables) (which combine both system-versioning and application-time periods).
* [DML-only flashback](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-management/server-monitoring-logs/binary-log/flashback), allowing instances, databases or tables to be rolled back to an old snapshot.
* [Oracle compatibility mode](https://github.com/mariadb-corporation/docs-server/blob/test/release-notes/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/broken-reference/README.md)
* [Sequences](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/sequences)
* [Table Value Constructors](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/sql-language-structure/table-value-constructors)
* [Dynamic Columns](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/nosql/dynamic-columns) support
* [Semi-sync plugin](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/standard-replication/semisynchronous-replication) merged into the server
* OR REPLACE syntax for [CREATE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/create) statements, such as [CREATE OR REPLACE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/tables/create-table#create-or-replace), [CREATE OR REPLACE DATABASE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/create/create-database#or-replace), etc
* [DELETE ... RETURNING](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-manipulation/changing-deleting-data/delete), [INSERT ... RETURNING](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-manipulation/inserting-loading-data/insertreturning), [REPLACE ... RETURNING](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-manipulation/changing-deleting-data/replacereturning)
* [WAIT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/transactions/wait-and-nowait) syntax for setting the lock wait timeout.
* [UUID](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/uuid-data-type) data type for storing UUIDs.
* [INET6](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/inet6) and [INET4](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/inet4) data types for storing IPv6 and IPv4 addresses.
* [SUPER privileges](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/account-management-sql-statements/grant) made more granular.
* [PROXY protocol support](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/server-client-software/client-libraries/proxy-protocol-support)
* Multiple [compression algorithms available as plugins](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/optimization-and-tuning/optimization-and-tuning-compression/compression-plugins)
* Number of supported decimals in [DECIMAL](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/numeric-data-types/decimal) has increased from `30` to `38`
* Number of parts of an index increased from `16` to `32`.
* Added catchall for [list partitions](https://github.com/mariadb-corporation/docs-server/blob/test/release-notes/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/broken-reference/README.md)
* Oracle-style [EXECUTE IMMEDIATE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/prepared-statements/execute-immediate) statement
* Lots of new [JSON functions](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/special-functions/json-functions)
* [Microsecond Precision in Processlist](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/information-schema/time_ms-column-in-information_schemaprocesslist)
* [Table Elimination](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/optimization-and-tuning/query-optimizations/table-elimination)
* [Virtual Columns](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/create/generated-columns)
* [Extended User Statistics](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics)
* [KILL all queries for a user](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/kill)
* [Storage-engine-specific CREATE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/product-development/plugin-development/storage-engines-storage-engine-development/engine-defined-new-tablefieldindex-attributes)
* MariaDB [supports more collations](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/character-sets/supported-character-sets-and-collations) (506) than MySQL (266).
* [FLUSH SSL](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/flush-commands/flush) command to reload SSL certificates without server restart.
* `IF NOT EXISTS` clause added to [INSTALL PLUGIN](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/plugin-sql-statements/install-plugin) and `IF EXISTS` clause added to [UNINSTALL PLUGIN](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/plugin-sql-statements/uninstall-plugin) and [UNINSTALL SONAME](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/plugin-sql-statements/uninstall-soname)
* [Enhancements to INFORMATION SCHEMA.PLUGINS table](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/information-schema/information-schema-tables/plugins-table-information-schema)
* [Group commit for the binary log](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-management/server-monitoring-logs/binary-log/group-commit-for-the-binary-log). This makes [replication notably faster!](https://www.facebook.com/note.php?note_id=10150261692455933)
* [BACKUP STAGE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/backup-commands/backup-stage) allows one to implement very efficient backups with minimal locking.
* [Progress reporting](https://github.com/mariadb-corporation/docs-server/blob/test/release-notes/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/broken-reference/README.md) for [ALTER TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/alter/alter-table) and [LOAD DATA INFILE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-manipulation/inserting-loading-data/load-data-into-tables-or-index/load-data-infile)
* [SHOW EXPLAIN](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/show/show-explain) gives the EXPLAIN plan for a query running in another thread. MySQL introduced the EXPLAIN FOR CONNECTION syntax to do the same thing.
* [PCRE Regular Expressions](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/string-functions/regular-expressions-functions/pcre) (including [REGEXP\_REPLACE()](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/string-functions/regular-expressions-functions/regexp_replace))
* [HandlerSocket](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/nosql/handlersocket) and faster [HANDLER](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/nosql/handler) calls
* MySQL 8 does not support [PROCEDURE ANALYSE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/secondary-functions/information-functions/procedure-analyse)
* MySQL 8 does not support the use of as an alias for [NULL](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/null-values)

## Incompatibilities

When moving from MySQL 8.0 to [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010), please take note of the following incompatibilities:

* For a list of function differences, see [Function Differences Between MariaDB 10.10 and MySQL 8.0](https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/function-differences-between-mariadb-and-mysql/function-differences-between-mariadb-and-mysql-unmaintained-series/function-differences-between-mariadb-10-10-and-mysql-8-0)
* For a list of system variable differences, see [System Variable Differences Between MariaDB 10.10 and MySQL 8.0](https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/system-variable-differences-between-mariadb-and-mysql/system-variable-differences-between-mariadb-and-mysql-unmaintained-series/system-variable-differences-between-mariadb-10-10-and-mysql-8-0)
* MariaDB does not support MySQL's SET PERSIST - [MDEV-16228](https://jira.mariadb.org/browse/MDEV-16228)
* MariaDB's GTID is not compatible with MySQL's. Note that MariaDB and MySQL also have different [GTID system variables](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/standard-replication/gtid#system-variables-for-global-transaction-id), so these need to be adjusted when migrating.
* The [unix\_socket authentication plugin](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/plugins/authentication-plugins/authentication-plugin-unix-socket) is now default on Unix-like systems, which is a major change to authentication in MariaDB. See [Authentication from MariaDB 10.4](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/security/user-account-management/authentication-from-mariadb-10-4) for an overview of the changes.
* All mysql\* binaries are now named mariadb\* (the previous mysql named is retained as a symlink for compatibility purposes)
* Not all [character sets and collations](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/character-sets) are [supported](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/character-sets/supported-character-sets-and-collations) across both MySQL and MariaDB. As of 10.10, MariaDB supports 40 character sets and 506 collations . As of 8.0.32, MySQL supports 41 character sets (`gb18030` being the additional one - [MDEV-7495](https://jira.mariadb.org/browse/MDEV-7495)) and 286 collations.
* MariaDB indicates collation pad status as part of the name (e.g. `utf8mb3_unicode_nopad_ci`), while MySQL indicates pad status by means of an extra column in [SHOW COLLATION](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/show/show-collation).
* To make CREATE TABLE ... SELECT work the same way in statement based and row based replication it's by default executed as [CREATE OR REPLACE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/tables/create-table#create-or-replace) on the slave. One benefit of this is that if the slave dies in the middle of CREATE ... SELECT it will be able to continue.
  * One can use the [slave-ddl-exec-mode](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/standard-replication/replication-and-binary-log-system-variables) variable to specify how `CREATE TABLE` and `DROP TABLE` is replicated.
* Users created with MySQL's SHA256 password algorithm cannot be used in [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) - [MDEV-9804](https://jira.mariadb.org/browse/MDEV-9804).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support Lateral Derived Tables - [MDEV-19078](https://jira.mariadb.org/browse/MDEV-19078).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support CIDR notation for user accounts - [MDEV-25515](https://jira.mariadb.org/browse/MDEV-25515).
* MariaDB stores [JSON](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/special-functions/json-functions) as true text, not in binary format as MySQL. MariaDB's JSON functions are much faster than MySQL's so there is no need to store in binary format, which would add complexity when manipulating JSON objects.
* For the same reason, MariaDB's [JSON data type](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/json) is an alias for [LONGTEXT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/longtext). If you want to replicate JSON columns from MySQL to MariaDB, you should store JSON objects in MySQL in a TEXT or LONGTEXT column or use statement-based replication. If you are using JSON columns and want to upgrade to MariaDB, use the [mysql\_json](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/plugins/other-plugins/mysql_json) plugin to automatically convert MySQL JSON to TEXT, or alternatively you need to either convert them to TEXT or use [mysqldump](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/legacy-clients-and-utilities/mysqldump) to copy these tables to MariaDB.
* In MySQL, JSON is compared according to json values. In MariaDB JSON strings are normal strings and compared as strings.
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support MySQL's JSON operators (`->` and `->>`) - [MDEV-13594](https://jira.mariadb.org/browse/MDEV-13594)
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) supports the standard by producing null and a warning for [JSON\_SEARCH](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/special-functions/json-functions/json_search) when given invalid data, while MySQL produces an error.
* [Roles](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/security/user-account-management/roles)
  * MariaDB never allows authentication via roles, while MySQL permits this.
  * MySQL permits activating multiple roles at the same time. MariaDB can achieve the same result by creating an intermediate aggregate role.
  * In the [INFORMATION\_SCHEMA.ENABLED\_ROLES table](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/information-schema/information-schema-tables/information-schema-enabled_roles-table), MySQL reports just the direct list of enabled roles, while MariaDB reports the enabled role, plus the effective inherited roles.
  * MySQL extends the [INFORMATION\_SCHEMA.APPLICABLE\_ROLES table](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/information-schema/information-schema-tables/information-schema-applicable_roles-table) .
  * MySQL includes the tables INFORMATION\_SCHEMA.ROLE\_TABLE\_GRANTS, INFORMATION\_SCHEMA.ROLE\_ROUTINE\_GRANTS, INFORMATION\_SCHEMA.ROLE\_COLUMN\_GRANTS, and INFORMATION\_SCHEMA ADMINISTRABLE\_ROLE\_AUTHORIZATIONS.
* MySQL has the [performance schema](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/performance-schema) enabled by default. For performance reasons [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) has it disabled by default. You can enable it by starting `mariadbd` with the option `--performance-schema`.
* In [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010), using [FLUSH TABLES](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/flush-commands/flush) without any table list will only close tables not in use, and tables not locked by the FLUSH TABLES connection. If there are no locked tables, FLUSH TABLES will be instant and will not cause any waits, as it no longer waits for tables in use. When a table list is provided, the server will wait for the end of any transactions that are using the tables. In MySQL, FLUSH TABLES only waits for the statements to complete.
* MariaDB binaries (`mariadbd`, [myisamchk](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/myisam-clients-and-utilities/myisamchk) etc.) give a warning if one uses a unique prefix of an option (such as `--big-table` instead of `--big-tables`). MySQL binaries require the full option name.
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) implements [InnoDB encryption](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/security/encryption/data-at-rest-encryption/data-at-rest-encryption-overview) in a different way to MySQL 8.0.
* MySQL's implementation of [aborting statements that exceed a certain time to execute](https://github.com/mariadb-corporation/docs-release-notes/blob/test/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/aborting-statement/README.md) can only kill SELECTs, while MariaDB's can kill any queries (excluding stored procedures).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support MySQL's `SELECT /*+ MAX_EXECUTION_TIME(n) */ ...` - see [Aborting Statements that Exceed a Certain Time to Execute](https://github.com/mariadb-corporation/docs-release-notes/blob/test/compatibility-and-differences/incompatibilities-and-feature-differences-between-mariadb-and-mysql-unmaint/aborting-statement/README.md).
* MySQL 8.0 does not support the [Query Cache](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/ha-and-performance/optimization-and-tuning/buffers-caches-and-threads/query-cache).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support the MySQL Memcached plugin (which has been deprecated in MySQL 8.0). However, data stored using memcached can be retrieved because the data is stored as InnoDB tables. MariaDB is able to start successfully with an error message of not being able to find libmemcached.so library.
* In MySQL, `X'HHHH'`, the standard SQL syntax for binary string literals, erroneously works in the same way as `0xHHHH`, which could work as a number or string depending on the context. In MariaDB, this has been fixed to behave as a string in all contexts (and never as a number). See [CAST](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/string-functions/cast) and [Hexadecimal Literals](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/sql-language-structure/hexadecimal-literals) for more details and examples.
* In [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010), [SHOW CREATE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/show/show-create-table) does not quote the DEFAULT value of an integer. [MariaDB 10.2](https://mariadb.com/docs/release-notes/community-server/old-releases/10.2/what-is-mariadb-102) and earlier, and MySQL, do. Since MariaDB can support defaults for [BLOB](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/blob) and [TEXT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/data-types/string-data-types/text) fields, while MySQL does not, [SHOW CREATE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/show/show-create-table) will also append `DEFAULT NULL` where no default is explicitly provided to nullable BLOB or TEXT fields in MariaDB.
* As a result of implementing [Table Value Constructors](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-structure/sql-language-structure/table-value-constructors), the [VALUES function](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/secondary-functions/miscellaneous-functions/values-value) has been renamed to VALUE().
* MariaDB's [NOWAIT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/transactions/wait-and-nowait) supports SELECT statements, LOCK TABLES and various DDL statements, while MySQL's NOWAIT only supports SELECT.
* MariaDB's [NOWAIT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/transactions/wait-and-nowait) cannot be added on [views](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/views) and [stored procedures](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/stored-routines/stored-procedures) while MySQL's can - [MDEV-25247](https://jira.mariadb.org/browse/MDEV-25247)
* MariaDB does not support [RENAME](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/rename-table) table while it is write-locked - [MDEV-30814](https://jira.mariadb.org/browse/MDEV-30814)
* MariaDB returns an `ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction` when unable to lock within the time, while MySQL returns `ERROR 3572 (HY000): Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set`
* MariaDB does not support the optional init\_vector argument for [AES\_ENCRYPT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/secondary-functions/encryption-hashing-and-compression-functions/aes_encrypt) and [AES\_DECRYPT](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-functions/secondary-functions/encryption-hashing-and-compression-functions/aes_decrypt) or the block\_encryption\_mode variable - [MDEV-9069](https://jira.mariadb.org/browse/MDEV-9069)
* MariaDB does not support the `--initialize` option. Use [mysql\_install\_db](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/legacy-clients-and-utilities/mysql_install_db) instead. - [MDEV-19010](https://jira.mariadb.org/browse/MDEV-19010)
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support the ngram and MeCab full-text parser plugins - [MDEV-10267](https://jira.mariadb.org/browse/MDEV-10267), [MDEV-10268](https://jira.mariadb.org/browse/MDEV-10268).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support the [MySQL X plugin](https://dev.mysql.com/doc/refman/8.0/en/x-plugin.html).
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) before [MariaDB 10.10.6](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/10.10.6) does not support MySQL 8's “native” InnoDB partitioning handler - [MDEV-29253](https://jira.mariadb.org/browse/MDEV-29253)
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support [CREATE TABLESPACE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/data-definition/create/create-tablespace) for InnoDB.
* The MySQL 8.0 and [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) [INFORMATION\_SCHEMA.COLUMNS](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/system-tables/information-schema/information-schema-tables/information-schema-columns-table) table contain slightly different fields.
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) client executables allow the connection protocol to be forced by specifying only connection properties on the command-line. See [mariadb Command-line client](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/mariadb-client/mariadb-command-line-client#how-to-specify-which-protocol-to-use-when-connecting-to-the-server)
* The MySQL binary log includes the thread\_id, while MariaDB's [binary log](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-management/server-monitoring-logs/binary-log) does not - [MDEV-7850](https://jira.mariadb.org/browse/MDEV-7850)
* The MariaDB syntax supporting Spatial Reference System IDs for spatial data type columns with [REF\_SYSTEM\_ID](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-usage/tables/create-table#ref_system_id) is not supported by MySQL. MySQL 8 introduced `CREATE SPATIAL REFERENCE SYSTEM`, which is not supported by MariaDB - [MDEV-29953](https://jira.mariadb.org/browse/MDEV-29953)
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support the RESTART statement - [MDEV-30813](https://jira.mariadb.org/browse/MDEV-30813)
* [Compressing the binary log in MariaDB](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/server-management/server-monitoring-logs/binary-log/compressing-events-to-reduce-size-of-the-binary-log) uses a different compression algorithm, and different system variables to manage.
* [MariaDB 10.10](https://mariadb.com/docs/release-notes/community-server/old-releases/10.10/what-is-mariadb-1010) does not support the SELECT FOR UPDATE and FOR SHARE locks - [MDEV-17514](https://jira.mariadb.org/browse/MDEV-17514)

{% @marketo/form formid="4316" formId="4316" %}
