]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
demo mysql alter for collate/charset
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Jun 2025 01:47:18 +0000 (21:47 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Jun 2025 01:47:53 +0000 (21:47 -0400)
Change-Id: I80cf0ccea6023c1e3411eaf6eeec7b2e5acb73e5

tests/test_mysql.py

index a23c9d736d707a3c4b81044c23ecc034fc0415ef..e155077f486dfb7f21a86b22cce6bb0422cc658c 100644 (file)
@@ -9,9 +9,11 @@ from sqlalchemy import Identity
 from sqlalchemy import inspect
 from sqlalchemy import Integer
 from sqlalchemy import MetaData
+from sqlalchemy import String
 from sqlalchemy import Table
 from sqlalchemy import text
 from sqlalchemy import TIMESTAMP
+from sqlalchemy.dialects.mysql import VARCHAR
 
 from alembic import op
 from alembic import util
@@ -240,6 +242,22 @@ class MySQLOpTest(TestBase):
         op.invoke(operation)
         context.assert_("ALTER TABLE t MODIFY c FLOAT NULL DEFAULT 0")
 
+    def test_alter_column_change_collation(self):
+        context = op_fixture("mysql")
+        op.alter_column(
+            "t1",
+            "c1",
+            nullable=False,
+            existing_type=String(50),
+            type_=VARCHAR(
+                50, charset="utf8mb4", collation="utf8mb4/utf8mb4_unicode_ci"
+            ),
+        )
+        context.assert_(
+            "ALTER TABLE t1 MODIFY c1 VARCHAR(50) "
+            "CHARACTER SET utf8mb4 COLLATE utf8mb4/utf8mb4_unicode_ci NOT NULL"
+        )
+
     def test_col_not_nullable(self):
         context = op_fixture("mysql")
         op.alter_column("t1", "c1", nullable=False, existing_type=Integer)