Keycloak 与 Mysql 8.0 集成
Keycloak integration with Mysql 8.0
我正在尝试将 keycloak 12 与 mysql 8.0 连接起来。
首先,我在 windows 机器上进行了开发更改,一切都很完美。
现在,我正在尝试在 ubuntu 20.04 上实现它。
变化是:
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC</connection-url>
<driver>mysql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>root</user-name>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
我第一次启动服务时一切都很完美,keycloak 的 liquibase 创建了所有 94 个数据库表。
服务重启后出现以下错误。
2021-02-08 21:17:37,092 FATAL [org.keycloak.services] (ServerService Thread Pool -- 68) Error during startup: java.lang.RuntimeException: Exception invoking method [listUnrunChangeSets] on object [liquibase.Liquibase@226434d1], using arguments [null,(),false]
at org.keycloak.keycloak-common@12.0.2//org.keycloak.common.util.reflections.Reflections.invokeMethod(Reflections.java:385)
at org.keycloak.keycloak-model-jpa@12.0.2//org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider.getLiquibaseUnrunChangeSets(LiquibaseJpaUpdaterProvider.java:285)
at org.keycloak.keycloak-model-jpa@12.0.2//org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider.validateChangeSet(LiquibaseJpaUpdaterProvider.java:253)
非常感谢
我遇到了同样的问题,我通过将 MySQL 连接器驱动程序版本降级到 8.0.22 解决了这个问题。
基于此 post:https://bugs.mysql.com/bug.php?id=102435,这是版本 8.0.23
的预期行为
是的,看起来下一个即将发布的 keycloak 版本将修复该问题,请参阅 keycloak pr #7942
我正在尝试将 keycloak 12 与 mysql 8.0 连接起来。 首先,我在 windows 机器上进行了开发更改,一切都很完美。 现在,我正在尝试在 ubuntu 20.04 上实现它。 变化是:
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC</connection-url>
<driver>mysql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>root</user-name>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
我第一次启动服务时一切都很完美,keycloak 的 liquibase 创建了所有 94 个数据库表。 服务重启后出现以下错误。
2021-02-08 21:17:37,092 FATAL [org.keycloak.services] (ServerService Thread Pool -- 68) Error during startup: java.lang.RuntimeException: Exception invoking method [listUnrunChangeSets] on object [liquibase.Liquibase@226434d1], using arguments [null,(),false]
at org.keycloak.keycloak-common@12.0.2//org.keycloak.common.util.reflections.Reflections.invokeMethod(Reflections.java:385)
at org.keycloak.keycloak-model-jpa@12.0.2//org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider.getLiquibaseUnrunChangeSets(LiquibaseJpaUpdaterProvider.java:285)
at org.keycloak.keycloak-model-jpa@12.0.2//org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider.validateChangeSet(LiquibaseJpaUpdaterProvider.java:253)
非常感谢
我遇到了同样的问题,我通过将 MySQL 连接器驱动程序版本降级到 8.0.22 解决了这个问题。
基于此 post:https://bugs.mysql.com/bug.php?id=102435,这是版本 8.0.23
的预期行为是的,看起来下一个即将发布的 keycloak 版本将修复该问题,请参阅 keycloak pr #7942