# Add Liquibase extension to Keycloak

**URL:** <https://forum.keycloak.org/t/add-liquibase-extension-to-keycloak/4627>\
**Category:** Configuring the server\
**Created:** [September 1, 2020, 11:58am UTC](https://forum.keycloak.org/t/add-liquibase-extension-to-keycloak/4627 "2020-09-01T11:58:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rahman](https://avatars.discourse-cdn.com/v4/letter/r/c0e974/32.png) [@Rahman](https://forum.keycloak.org/u/Rahman)\
**Post date:** [September 1, 2020, 11:58am UTC](https://forum.keycloak.org/t/add-liquibase-extension-to-keycloak/4627/1 "2020-09-01T11:58:35Z")

</div>

I am trying to use the Keycloak with a non-standard database TERADATA-DB.

Liquibase Extensions, extend Liquibase database support and capabilities, Teradata is listed as an available extension for liquibase.

https://liquibase.jira.com/wiki/spaces/CONTRIB/pages/1998865/Available+Extensions

While trying Liquibase as a standalone along with Teradata extension without Keycloak, the keycloak tables are getting generated in the Teradata database.

Liquibase extensions are not bundled by default in Keycloak, I have tried to add extension jar in module as below

> Blockquote

```
<resources>
    <resource-root path="liquibase-teradata-3-5-3.5.5.jar"/>
    <resource-root path="liquibase.jar"/>
</resources>

<dependencies>
    <module name="org.apache.commons.logging"/>
    <module name="javax.api"/>
</dependencies>

```

> Blockquote

but while keycloak startup I am getting below error,

> Blockquote  
> 17:05:45,069 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool – 66) WFLYCLINF0002: Started realmRevisions cache from keycloak container  
> 17:05:45,077 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool – 66) WFLYCLINF0002: Started userRevisions cache from keycloak container  
> 17:05:45,096 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool – 66) WFLYCLINF0002: Started authorizationRevisions cache from keycloak container  
> 17:05:45,097 INFO [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (ServerService Thread Pool – 66) Node name: winsr186001-m4p, Site name: null  
> 17:05:47,988 ERROR [stderr] (ServerService Thread Pool – 66) WARNING 01/09/20, 5:05 PM: liquibase: Unknown database: Teradata  
> 17:05:48,079 WARN [org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider] (ServerService Thread Pool – 66) Failed to rollback connection after error: java.sql.SQLException: IJ031040: Connection is not associated with a managed connection: org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8@45617e70  
> at org.jboss.ironjacamar.jdbcadapters@1.4.20.Final//org.jboss.jca.adapters.jdbc.WrappedConnection.lock(WrappedConnection.java:173)  
> at org.jboss.ironjacamar.jdbcadapters@1.4.20.Final//org.jboss.jca.adapters.jdbc.WrappedConnection.rollback(WrappedConnection.java:915)  
> at org.keycloak.keycloak-model-jpa@10.0.2//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.safeRollbackConnection(LiquibaseDBLockProvider.java:178)  
> at org.keycloak.keycloak-model-jpa@10.0.2//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lambda$null$1(LiquibaseDBLockProvider.java:120)  
> at org.keycloak.keycloak-common@10.0.2//org.keycloak.common.util.Retry.executeWithBackoff(Retry.java:92)  
> at org.keycloak.keycloak-model-jpa@10.0.2//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lambda$waitForLock$2(LiquibaseDBLockProvider.java:108)  
> at org.keycloak.keycloak-server-spi-private@10.0.2//org.keycloak.models.utils.KeycloakModelUtils.suspendJtaTransaction(KeycloakModelUtils.java:682)  
> at org.keycloak.keycloak-model-jpa@10.0.2//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.waitForLock(LiquibaseDBLockProvider.java:94)  
> at org.keycloak.keycloak-services@10.0.2//org.keycloak.services.resources.KeycloakApplication$1.run(KeycloakApplication.java:145)  
> at org.keycloak.keycloak-server-spi-private@10.0.2//org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)  
> at org.keycloak.keycloak-services@10.0.2//org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:138)  
> at org.keycloak.keycloak-wildfly-extensions@10.0.2//org.keycloak.provider.wildfly.WildflyPlatform.onStartup(WildflyPlatform.java:29)  
> at org.keycloak.keycloak-services@10.0.2//org.keycloak.services.resources.KeycloakApplication.(KeycloakApplication.java:125)  
> at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)  
> at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)  
> at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)  
> at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)  
> at org.jboss.resteasy.resteasy-jaxrs@3.11.2.Final//org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:152)  
> at org.jboss.resteasy.resteasy-jaxrs@3.11.2.Final//org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2805)  
> at org.jboss.resteasy.resteasy-jaxrs@3.11.2.Final//org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:369)  
> at org.jboss.resteasy.resteasy-jaxrs@3.11.2.Final//org.jboss.resteasy.spi.ResteasyDeployment.startInternal(ResteasyDeployment.java:281)

> Blockquote

Pl help me on this.
