From 840d009c06e7bcff2e312f68b6bdd5d9926cc9e6 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 7 Jul 2021 17:02:20 +0200 Subject: [PATCH] [3.2.x] Fixed inspectdb and schema tests on MariaDB 10.6+. The utf8 character set (and related collations) is by default an alias for utf8mb3 on MariaDB 10.6+. Backport of 355ecd141671e34853d1ff99ffdb1a7fb95b4276 from main --- django/db/backends/mysql/features.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py index 419b2ba6f0..a37fe81cbd 100644 --- a/django/db/backends/mysql/features.py +++ b/django/db/backends/mysql/features.py @@ -47,11 +47,18 @@ class DatabaseFeatures(BaseDatabaseFeatures): supports_order_by_nulls_modifier = False order_by_nulls_first = True - test_collations = { - 'ci': 'utf8_general_ci', - 'non_default': 'utf8_esperanto_ci', - 'swedish_ci': 'utf8_swedish_ci', - } + + @cached_property + def test_collations(self): + charset = 'utf8' + if self.connection.mysql_is_mariadb and self.connection.mysql_version >= (10, 6): + # utf8 is an alias for utf8mb3 in MariaDB 10.6+. + charset = 'utf8mb3' + return { + 'ci': f'{charset}_general_ci', + 'non_default': f'{charset}_esperanto_ci', + 'swedish_ci': f'{charset}_swedish_ci', + } @cached_property def django_test_skips(self):