From 096431a40197b253ef04207805d1bb3138489f07 Mon Sep 17 00:00:00 2001 From: Tobias Macey Date: Mon, 20 Oct 2025 12:04:25 -0400 Subject: [PATCH] fix: Convert UUIDField columns to uuid type for MariaDB Converts UUIDField columns from char(32) to uuid type for MariaDB Django 5 compatibility. This migration converts 3 UUIDFields: - subsidy_subsidy.uuid - subsidy_subsidy.enterprise_customer_uuid - subsidy_subsidyroleassignment.enterprise_id See: https://docs.djangoproject.com/en/5.2/releases/5.0/#migrating-uuidfield --- enterprise_subsidy/__init__.py | 2 +- .../0023_mariadb_uuid_conversion.py | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 enterprise_subsidy/apps/subsidy/migrations/0023_mariadb_uuid_conversion.py diff --git a/enterprise_subsidy/__init__.py b/enterprise_subsidy/__init__.py index 71421142..e4b5acae 100644 --- a/enterprise_subsidy/__init__.py +++ b/enterprise_subsidy/__init__.py @@ -1,4 +1,4 @@ """ enterprise-subsidy module. """ -__version__ = '1.0.0' +__version__ = '1.0.1' diff --git a/enterprise_subsidy/apps/subsidy/migrations/0023_mariadb_uuid_conversion.py b/enterprise_subsidy/apps/subsidy/migrations/0023_mariadb_uuid_conversion.py new file mode 100644 index 00000000..30678647 --- /dev/null +++ b/enterprise_subsidy/apps/subsidy/migrations/0023_mariadb_uuid_conversion.py @@ -0,0 +1,48 @@ +# Generated migration for MariaDB UUID field conversion (Django 5.2) +""" +Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility. +""" + +from django.db import migrations + + +def apply_mariadb_migration(apps, schema_editor): + connection = schema_editor.connection + if connection.vendor != 'mysql': + return + with connection.cursor() as cursor: + cursor.execute("SELECT VERSION()") + version = cursor.fetchone()[0] + if 'mariadb' not in version.lower(): + return + with connection.cursor() as cursor: + cursor.execute("ALTER TABLE subsidy_subsidy MODIFY uuid uuid NOT NULL") + cursor.execute("ALTER TABLE subsidy_subsidy MODIFY enterprise_customer_uuid uuid NOT NULL") + cursor.execute("ALTER TABLE subsidy_subsidyroleassignment MODIFY enterprise_id uuid NULL") + + +def reverse_mariadb_migration(apps, schema_editor): + connection = schema_editor.connection + if connection.vendor != 'mysql': + return + with connection.cursor() as cursor: + cursor.execute("SELECT VERSION()") + version = cursor.fetchone()[0] + if 'mariadb' not in version.lower(): + return + with connection.cursor() as cursor: + cursor.execute("ALTER TABLE subsidy_subsidy MODIFY uuid char(32) NOT NULL") + cursor.execute("ALTER TABLE subsidy_subsidy MODIFY enterprise_customer_uuid char(32) NOT NULL") + cursor.execute("ALTER TABLE subsidy_subsidyroleassignment MODIFY enterprise_id char(32) NULL") + + +class Migration(migrations.Migration): + dependencies = [ + ('subsidy', '0022_backfill_initial_deposits'), + ] + operations = [ + migrations.RunPython( + code=apply_mariadb_migration, + reverse_code=reverse_mariadb_migration, + ), + ]