# MariaDB 12.3 LTS: what changed and what breaks (reserved words, removed variables, Galera packages)

Source: https://srvscripts.com/guides/mariadb-12-3-lts-what-breaks/
Updated: 2026-10-03
Publisher: srvScripts (https://srvscripts.com/)

MariaDB 12.3 is the long-term-support release of the 12.x series, published on 28 May 2026 and supported until June 2029. It rolls up everything from 12.0, 12.1 and 12.2, which means the change list is larger than a normal LTS-to-LTS step. Most of it is additive and harmless to a hosting server. A short list is not: two new reserved words, three removed system variables, a new default-capable authentication plugin and a packaging change for Galera. This guide separates the two so you know what to test.

In short: MariaDB 12.3 adds Oracle-compatibility syntax, an XML type, optimizer hints, a segmented Aria key cache and mariadb-dump -L wildcards, none of which affect a typical hosted application.

**Short answer:** MariaDB 12.3 adds Oracle-compatibility syntax, an XML type, optimizer hints, a segmented Aria key cache and `mariadb-dump -L` wildcards, none of which affect a typical hosted application. What breaks is short: `CONVERSION` and `TO_DATE` are now reserved words, `big_tables`, `large_page_size` and `storage_engine` abort startup if left in `my.cnf`, duplicate foreign key names on one table are rejected, accounts on `caching_sha2_password` need modern client libraries, and Galera nodes must install `galera-4` separately or they silently fail to rejoin the cluster.

## What is new and safe to ignore at first

The additions are aimed at people migrating from Oracle and at application developers:

- Oracle-compatibility mode extensions: the `+` outer-join syntax, `TO_DATE`, `TO_NUMBER`, associative arrays and `SYS_REFCURSOR` in stored procedures.

- An XML data type.

- Optimizer hints in the `/*+ ... */` comment style, which give a per-query way to force or forbid index use without changing the schema.

- A segmented Aria key cache, which helps servers with many concurrent reads on Aria tables (cPanel’s own `cpanel*` schemas and many phpMyAdmin control tables are Aria).

- Additional `ST_*` GIS functions.

- The `ssl_passphrase` option for encrypted private keys.

- `mariadb-dump -L` wildcard database selection, introduced in 12.1, covered in our [mariadb-dump guide](/guides/mariadb-dump-vs-mysqldump/).

None of these change behaviour for a customer’s WordPress or Laravel install. Read the changelog for the full list, then move on to what can break.

## Reserved words: CONVERSION and TO_DATE

12.3 reserves `CONVERSION` and `TO_DATE`. Any customer schema with a column or table named `conversion` (marketing databases love this word) will produce a syntax error on every unquoted reference after the upgrade. Find them before upgrading:

```
mariadb -N -e "SELECT CONCAT(TABLE_SCHEMA,'.',TABLE_NAME,'.',COLUMN_NAME) FROM information_schema.COLUMNS WHERE COLUMN_NAME IN ('conversion','to_date');"
mariadb -N -e "SELECT CONCAT(TABLE_SCHEMA,'.',TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_NAME IN ('conversion','to_date');"
```

The fix is on the application side: backtick-quote the identifier. The schema does not need to change, but the queries do, and that means the customer’s code. Tell them before the upgrade rather than after. The same class of problem hit `ROW_NUMBER` in 10.7; if a server skipped from 10.6 straight to 12.3, check for that one too.

## Removed variables: big_tables, large_page_size, storage_engine

These were deprecated long ago and are gone in 12.3. If any appears in `my.cnf` the server refuses to start:

```
grep -E '^\s*(big_tables|large_page_size|storage_engine|default_storage_engine\s*=\s*MyISAM)' /etc/my.cnf /etc/my.cnf.d/*.cnf
```

`storage_engine` is the one that lingers, because a decade ago every tuning guide suggested it. Replace it with `default_storage_engine` if you need to set a default at all. The earlier removals that also matter on a long hop (`innodb_log_write_ahead_size`, `wsrep_strict_ddl`, `keep_files_on_create`) are covered in the [unknown variable guide](/guides/mariadb-unknown-variable-after-upgrade/).

## Foreign key names must be unique per table

12.3 enforces that two foreign keys on the same table cannot share a name. Old schemas created by sloppy migration tools sometimes have this, and `mariadb-upgrade` will report the affected tables. Find them ahead of time:

```
mariadb -N -e "SELECT TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME, COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='FOREIGN KEY' GROUP BY 1,2,3 HAVING COUNT(*)>1;"
```

Each needs an `ALTER TABLE ... DROP FOREIGN KEY` and re-add with a distinct name, done by the customer or with their agreement.

## caching_sha2_password

12.1 introduced the `caching_sha2_password` authentication plugin, the same one MySQL 8 made its default. In 12.3 it is available, and whether new accounts land on it depends on the server’s default plugin setting, which some packaged configurations and panel account-creation paths override. Check what your server actually does rather than assuming:

```
mariadb -e "SHOW GLOBAL VARIABLES LIKE 'default_authentication_plugin';"
mariadb -e "SELECT user, host, plugin FROM mysql.user WHERE plugin='caching_sha2_password';"
```

Accounts on the new plugin need a client library that speaks it and a TLS or RSA-exchanged first connection. Old PHP builds, some Perl DBD::mysql versions and any tool built against libmysqlclient 5.7 fail with an authentication plugin error. Our [caching_sha2_password guide](/guides/caching-sha2-password-mariadb-12/) covers the fixes. On a shared server, leave the default alone until every PHP version you offer has been tested against it.

## Galera is a separate package

From 12.x the Galera provider library is no longer pulled in by the server package. On a standalone node this is invisible. On a Galera cluster, upgrading a node without also installing `galera-4` produces a server that starts fine and silently never rejoins the cluster:

```
rpm -q galera-4 || dnf install -y galera-4
mariadb -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';"
```

Confirm the cluster size before and after each node.

**Panel availability.** DirectAdmin’s CustomBuild has offered 12.3 since 1.696 and steps through LTS versions on the way, as in our [DirectAdmin upgrade guide](/guides/upgrade-mariadb-directadmin-custombuild/). cPanel does not offer 12.3 in WHM yet; 11.8 is the ceiling there as of late September 2026, and running an unsupported version by hand on a cPanel server breaks the panel’s own upgrade and repair tooling.

## Verify

After the upgrade:

```
mariadb -e "SELECT VERSION();"
mariadb-upgrade
mariadb-check --all-databases --check-upgrade | grep -vE 'OK$'
tail -50 /var/lib/mysql/$(hostname).err | grep -iE 'error|warn|unknown'
```

Then take a handful of the busiest customer sites and load their front and admin pages while watching the error log. A common pitfall is declaring success because the service started; the reserved-word breakage only appears when a specific query runs, sometimes days later in a monthly report. If any schema turned up in the `conversion` search above, test that application specifically.

## MariaDB 12.3 LTS at a glance

**Official documentation:** [MariaDB documentation](https://mariadb.com/docs/), [Linux man pages](https://man7.org/linux/man-pages/).

**Related guides:** [Upgrading MariaDB safely on DirectAdmin: 10.6 → 10.11 → 11.8 → 12.3 with CustomBuild](https://srvscripts.com/guides/upgrade-mariadb-directadmin-custombuild/) · [Converting MySQL to MariaDB (and why in-place switching is no longer supported)](https://srvscripts.com/guides/convert-mysql-to-mariadb-safely/) · [Upgrading MariaDB in WHM safely: backups, slow shutdown and mariadb-upgrade](https://srvscripts.com/guides/upgrade-mariadb-whm-safely/).

## Frequently asked questions

### Is MariaDB 12.3 available in cPanel and WHM?

Not as of late September 2026; 11.8 is the highest version in the WHM upgrade workflow. DirectAdmin’s CustomBuild has offered 12.3 since 1.696. Installing 12.3 by hand on a cPanel server breaks the panel’s upgrade and repair tooling, so wait for WHM support there.

### Does MariaDB 12.3 change the default authentication plugin?

The `caching_sha2_password` plugin is available, but whether new accounts land on it depends on the server’s `default_authentication_plugin` setting, which packaged configurations and panel account-creation paths can override. Check `SHOW GLOBAL VARIABLES LIKE 'default_authentication_plugin'` and leave the default alone on shared servers until every PHP version is tested.

### Why does a query with a column named conversion fail after upgrading to 12.3?

Because `CONVERSION` and `TO_DATE` became reserved words. Any unquoted reference to a table or column with either name is now a syntax error. The schema can stay as it is; the application’s queries must backtick-quote the identifier.
