Keycloak 18/19/20 won't create default-tables on docker when configure a second DB via quarkus.properties

I am implementing a Custom Userprovider SPI for keycloak 18.0.2 and therefore have (alongside the keycloak default PostgreSQL-DB) a MSSQL in use.
The customized Keycloak and the PostgreSQL are run via docker-container.
The problems occure on my local MacBook M1 (but the same behaviour on intel-cpu as well). When building and starting the custom keycloak container, all volumes for both containers are removed. So there is always fresh DB-container

(sidenote: As the SPI was written for WildFly and it is broken with 19.x.x, i just stepped back to 18.0.2 to get the whole process working again. Afterwards will update to 19 and adapt the SPI implementations.)


the problem …

Keycloak will create all tables - for the default keycloak-db (PostgreSQL) - in the public schema ONLY IF i configure the connection to the MSSQL via persistence.xml. This must not be in the production setup, as this should be at least configurable by the gitlab pipeline.

If i move the connection-infos from persistence.xml to quarkus.properties (as described in here: keycloak-quickstarts/user-storage-jpa at main · keycloak/keycloak-quickstarts · GitHub), the default DB-tables can’t be created anymore…

  • logs in Postgre-Container:
LOG:        database system is ready to accept connections
ERROR:      relation "migration_model" does not exist at character 25
STATEMENT:  SELECT ID, VERSION FROM MIGRATION_MODEL ORDER BY UPDATE_TIME DESC
ERROR:      syntax error at end of input at character 20
STATEMENT:  call current_schema
ERROR:      current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  SELECT COUNT(*) FROM DATABASECHANGELOG
ERROR:      syntax error at end of input at character 20
STATEMENT:  call current_schema
ERROR:      current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  SELECT COUNT(*) FROM DATABASECHANGELOGLOCK
ERROR:      syntax error at end of input at character 20
STATEMENT:  call current_schema
ERROR:      current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL, "LOCKED" BOOLEAN NOT NULL, LOCKGRANTED datetime, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))
ERROR:      syntax error at end of input at character 20
  • keycloak logs:
WARN  [liquibase.database.DatabaseFactory] (main) Unknown database: PostgreSQL
WARN  [org.keycloak.connections.jpa.updater.liquibase.lock.CustomLockService] (main) Failed to create lock table. Maybe other transaction created in the meantime. Retrying...
ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (development) mode

Does using the quarkus.properties overwrite some keycloak-defaults? so, when using it, keycloak acts differently than the configuration without a custom quarkus file?