首页 > 解决方案 > mysql 5.7 和 Java 17 和 jconnect 8 的 keycloak 服务器 15.0.2 超时错误

问题描述

使用 connect 8.0.27 将 kycloak 服务器 15.0.2 连接到我的 SQL 5.7 数据库时出现错误。

启动 keycloak 服务器后,我可以在 keycloak 模式中看到由 keycloak 服务器创建的表。但是服务器因错误而启动和停止。

在配置 MySQL 数据源后第一次启动时,它会挂起 5 分钟,抛出超时异常,然后停止并显示以下堆栈跟踪:

liquibase.exception.UnexpectedLiquibaseException:java.sql.SQLException:IJ031070:事务无法继续:STATUS_ROLLEDBACK

at liquibase.database.jvm.JdbcConnection.getURL(JdbcConnection.java:79)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:66)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:113)

at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1277)

at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1259)

at liquibase.changelog.ChangeSet.execute(ChangeSet.java:582)

... 76 more

引起:java.sql.SQLException:IJ031070:事务无法继续:STATUS_ROLLEDBACK

at org.jboss.jca.adapters.jdbc.WrapperDataSource.checkTransactionActive(WrapperDataSource.java:272)

at org.jboss.jca.adapters.jdbc.WrappedConnection.checkTransactionActive(WrappedConnection.java:2007)

at org.jboss.jca.adapters.jdbc.WrappedConnection.checkStatus(WrappedConnection.java:2022)

at org.jboss.jca.adapters.jdbc.WrappedConnection.checkTransaction(WrappedConnection.java:1996)

at org.jboss.jca.adapters.jdbc.WrappedConnection.getMetaData(WrappedConnection.java:982)

at liquibase.database.jvm.JdbcConnection.getURL(JdbcConnection.java:77)

... 81 more

在随后的启动中,它会抛出如下外键错误,然后再次停止:

liquibase.exception.DatabaseException:表'keycloak.client_template_attributes'不存在[失败的SQL:ALTER TABLE keycloak.CLIENT_TEMPLATE_ATTRIBUTES DROP FOREIGN KEY FK_CL_TEMPL_ATTR_TEMPL]

at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:309)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:113)

at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1277)

at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1259)

at liquibase.changelog.ChangeSet.execute(ChangeSet.java:582)

... 76 more

引起:java.sql.SQLSyntaxErrorException:表'keycloak.client_template_attributes'不存在

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)

at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)

at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:768)

at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:653)

at org.jboss.jca.adapters.jdbc.WrappedStatement.execute(WrappedStatement.java:198)

at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:307)

... 81 more

标签: mysqlkeycloakmysql-connector

解决方案


您需要增加超时值

Standalone.xml 中的选项 1

<coordinator-environment default-timeout="3600" statistics-enabled=......

选项 2 其他方法是使用 JVM 参数 -Djboss.as.management.blocking.timeout=3600


推荐阅读