Skip to content

[mariadb-features] Nuance: 11.8 collation default change (uca1400_ai_ci) can cause data collisions and join errors #16

Description

@jana-dbaasnow

Summary

The charset section notes the utf8mb4 replication concern with older
replicas. The collation change in 11.8 from utf8mb4_general_ci to
uca1400_ai_ci deserves a separate and more prominent warning because it
can cause data integrity issues on upgrade — not just on new installs.

The three production impacts

1. Unique key collisions

Values that were distinct under utf8mb4_general_ci may collide under
uca1400_ai_ci due to different case-folding and accent-folding rules.
An upgrade that changes the effective collation on an existing table can
produce unique key violations that were not present before.

2. Sort order changes

Applications that rely on ORDER BY results against string columns may
get different orderings after an upgrade if the collation changes. This
is a silent correctness issue — no error, wrong results.

3. Illegal mix of collations on joins

Joining tables where one column uses utf8mb4_general_ci (pre-upgrade
schema) and another uses uca1400_ai_ci (post-upgrade default) raises:

ERROR 1267: Illegal mix of collations

This surfaces in applications after a mixed-version migration or partial
schema upgrade.

What agents should know

-- Check current default collation:
SHOW VARIABLES LIKE 'collation_server';

-- Check collation on specific table columns:
SHOW CREATE TABLE orders\G

-- To preserve existing collation behavior on upgrade, set explicitly:
[mariadb]
collation_server = utf8mb4_general_ci

-- Or set per column to avoid mix of collations errors:
ALTER TABLE orders
  MODIFY COLUMN name VARCHAR(255)
  CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Suggested addition

A note that the default collation change affects existing data on upgrade
(not just new installs) and can produce unique key violations, sort order
changes, and "Illegal mix of collations" errors on joins between old and
new collation columns.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions