Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Upgrade to Keycloak 25 - Table 'USER_CONSENT' is specified twice on MySQL/MariaDB database #30300

@nicolabeghin

Description

@nicolabeghin

Before reporting an issue

  • I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

Area

core

Describe the bug

When migrating Keycloak from 24.0.x to 25.0.0 running on database MySQL 8 or MariaDB 10.2 the migration unique-consentuser fails due to

liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset META-INF/jpa-changelog-25.0.0.xml::unique-consentuser::keycloak: keycloak-1 | Reason: liquibase.exception.DatabaseException: (conn=2816) Table 'USER_CONSENT' is specified twice, both as a target for 'DELETE' and as a separate source for data [Failed SQL: (1093) DELETE FROM keycloak.USER_CONSENT WHERE ID IN ( SELECT uc.ID FROM keycloak.USER_CONSENT uc INNER JOIN ( SELECT CLIENT_ID, USER_ID, MAX(LAST_UPDATED_DATE) AS MAX_UPDATED_DATE FROM keycloak.USER_CONSENT GROUP BY CLIENT_ID, USER_ID HAVING COUNT(*) > 1 ) max_dates ON uc.CLIENT_ID = max_dates.CLIENT_ID AND uc.USER_ID = max_dates.USER_ID AND uc.LAST_UPDATED_DATE = max_dates.MAX_UPDATED_DATE )]

The SQL is not ok for MySQL/MariaDB

DELETE FROM keycloak.USER_CONSENT WHERE ID IN ( SELECT uc.ID FROM keycloak.USER_CONSENT uc INNER JOIN ( SELECT CLIENT_ID, USER_ID, MAX(LAST_UPDATED_DATE) AS MAX_UPDATED_DATE FROM keycloak.USER_CONSENT GROUP BY CLIENT_ID, USER_ID HAVING COUNT(*) > 1 ) max_dates ON uc.CLIENT_ID = max_dates.CLIENT_ID AND uc.USER_ID = max_dates.USER_ID AND uc.LAST_UPDATED_DATE = max_dates.MAX_UPDATED_DATE )

since not allowed as per https://mariadb.com/kb/en/e1093/

Version

25.0.0

Regression

  • The issue is a regression

Expected behavior

Upgrade to 25.0.0 being completed successfully

Actual behavior

Upgrade to 25.0.0 fails

How to Reproduce?

Just start a Keycloak 24.x.x running on MySQL/MariaDB db and upgrade to Keycloak 25.0.0

Anything else?

No response

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions