From: roche-quentin Date: Wed, 8 May 2024 08:41:00 +0000 (+0200) Subject: FIX #11285 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbd9c239c60b8f4f2be66967825ee15c1f7941b0;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git FIX #11285 CONSTRAINT FOREIGN KEY ON DELETE was missing SET DEFAULT in MySQL reflexion --- diff --git a/lib/sqlalchemy/dialects/mysql/reflection.py b/lib/sqlalchemy/dialects/mysql/reflection.py index c764e8ccc7..d7622c5463 100644 --- a/lib/sqlalchemy/dialects/mysql/reflection.py +++ b/lib/sqlalchemy/dialects/mysql/reflection.py @@ -505,7 +505,7 @@ class MySQLTableDefinitionParser: # # unique constraints come back as KEYs kw = quotes.copy() - kw["on"] = "RESTRICT|CASCADE|SET NULL|NO ACTION" + kw["on"] = "RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT" self._re_fk_constraint = _re_compile( r" " r"CONSTRAINT +" diff --git a/test/dialect/mysql/test_reflection.py b/test/dialect/mysql/test_reflection.py index 79e7198ef3..4fa472ce1a 100644 --- a/test/dialect/mysql/test_reflection.py +++ b/test/dialect/mysql/test_reflection.py @@ -1557,7 +1557,7 @@ class RawReflectionTest(fixtures.TestBase): " CONSTRAINT `addresses_user_id_fkey` " "FOREIGN KEY (`user_id`) " "REFERENCES `users` (`id`) " - "ON DELETE CASCADE ON UPDATE SET NULL" + "ON DELETE SET DEFAULT ON UPDATE SET NULL" ) eq_( m.groups(), @@ -1567,7 +1567,7 @@ class RawReflectionTest(fixtures.TestBase): "`users`", "`id`", None, - "CASCADE", + "SET DEFAULT", "SET NULL", ), )