【问题标题】:Keycloak in Spring Boot cannot apply Liquibase patchesSpring Boot 中的 Keycloak 无法应用 Liquibase 补丁
【发布时间】:2021-02-08 05:30:52
【问题描述】:

我正在尝试启动包含嵌入式 Keycloak 授权服务器 following this tutorial 的 Spring Boot 服务器。教程的代码是here。我自己的适配是一个 MySQL DB,而不是 H2,通过docker-compose 启动

在服务器启动时,我在应用数据库补丁时收到此错误: Caused by: java.sql.SQLSyntaxErrorException: Table 'auth.client_session' doesn't exist。 SequelPro 抛出了同样的错误,但表格在视觉上就在那里。我通过looking around this thread 解决了这个问题。 (重启对我来说就足够了)

下一个错误来自下一个补丁,引用:keycloak java.sql.SQLSyntaxErrorException: Table 'client_attributes' already exists,而这个错误让我陷入了数据库迁移的困境,因为如果我删除它,它会回到“不存在”错误。

版本:

  • Spring Boot 2.2.4.RELEASE
  • MySQL 5.7.32
  • org.keycloak:keycloak-dependencies-server-all:10.0.1

【问题讨论】:

    标签: mysql spring-boot keycloak liquibase


    【解决方案1】:

    将 MySQL 的 lower_case_table_names 配置更改为 1 解决了这个问题。灵感来自this answer

    要通过docker-compose 刻录此设置,请在yaml 文件中自定义您的命令(灵感来自this repo):

    db-service:
      [...]
      ports:
        - 3306:3306
      command: mysqld --lower_case_table_names=1 
    

    还要确保表格的编码是UTF-8,以避免另一个头抓错误:keycloak Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535

    其他参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2016-02-12
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2022-12-31
      相关资源
      最近更新 更多