Keycloak CREATE TABLE APPLICATION_DEFAULT_ROLES выдает уже существующую ошибкуJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Keycloak CREATE TABLE APPLICATION_DEFAULT_ROLES выдает уже существующую ошибку

Сообщение Гость »


Контекст:
Я устанавливаю keycloak с помощью Helm Chart в среде Kubernetes. Это создает единое развертывание и модуль с другими необходимыми ресурсами в моей среде k8s. В контрольной диаграмме используется изображение quay.io/keycloak/keycloak:20.0 . Я не выполняю никаких специальных настроек и не позволяю keycloak создавать таблицы в базе данных при запуске (я использую MySQL). Ранее я использовал ту же диаграмму keycloak с обычной базой данных Oracle Cloud MySQL, где keycloak мог создавать 92 таблицы, необходимые для ее функционирования.
Теперь, когда я переключился на экземпляр MySQL Oracle Cloud HA (высокодоступный), происходит следующее: он выдает мне эту ошибку:
2023-09-21 09:26:04,394 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основная) ОШИБКА: не удалось обновить базу данных 2023-09-21 09:26:04,394 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основная) ОШИБКА: liquibase.Exception.MigrationFailedException: не удалось выполнить миграцию для набора изменений META-INF/jpa-changelog-1.0.0 .Final.xml::1.0.0.Final-KEYCLOAK-5461::sthorger@redhat.com: Причина: liquibase.Exception.DatabaseException: таблица «APPLICATION_DEFAULT_ROLES» уже существует [Ошибка SQL: (1050) CREATE TABLE keycloak.APPLICATION_DEFAULT_ROLES (APPLICATION_ID VARCHAR(36) NOT NULL, ROLE_ID VARCHAR(36) NOT NULL)] 2023-09-21 09:26:04,395 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основная) ОШИБКА: не удалось выполнить миграцию для набора изменений META-INF/jpa-changelog-1.0.0.Final.xml:: 1.0.0.Final-KEYCLOAK-5461::sthorger@redhat.com: Причина: liquibase.Exception.DatabaseException: таблица «APPLICATION_DEFAULT_ROLES» уже существует [Ошибка SQL: (1050) CREATE TABLE keycloak.APPLICATION_DEFAULT_ROLES (APPLICATION_ID VARCHAR(36) NOT NULL, ROLE_ID VARCHAR(36) NOT NULL)] 2023-09-21 09:26:04,395 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основная) ОШИБКА: таблица «APPLICATION_DEFAULT_ROLES» уже существует [Ошибка SQL: (1050) CREATE TABLE keycloak.APPLICATION_DEFAULT_ROLES (APPLICATION_ID VARCH) АР (36) NOT NULL, ROLE_ID VARCHAR (36) NOT NULL)] 2023-09-21 09:26:04,395 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основная) ОШИБКА: таблица «APPLICATION_DEFAULT_ROLES» уже существует 2023-09-21 09:26:04,395 ОШИБКА [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (основной) Для получения более подробной информации выполните ту же команду, передав
Проблема в том, что я никогда не видел эту таблицу в базе данных с одним экземпляром, так зачем же ее создавать сейчас? Поэтому я проверил репозиторий keycloak на предмет некоторых подсказок. Вот мои выводы:
[*]ссылка на https://github.com/search?q=repo%3Akeyc ... %5C%2FMETA -INF%5C%2F%2F%20APPLICATION_DEFAULT_ROLES&type=код с элементом поиска как «APPLICATION_DEFAULT_ROLES»:

здесь я обнаружил, что при использовании наборов изменений Liquibase создается эта таблица, устанавливаются некоторые связи, а затем переименовывается таблица в CLIENT_DEFAULT_ROLES.
[*]ссылка на https://github.com/search?q=repo%3Akeyc ... %5C%2FMETA -INF%5C%2F%2F+CLIENT_DEFAULT_ROLES&type=код с элементом поиска как «CLIENT_DEFAULT_ROLES»:

здесь я обнаружил, что использование наборов изменений Liquibase изменяет таблицу CLIENT_DEFAULT_ROLES, а затем помещает ее в один из наборов изменений, поэтому в конце она не будет видна.

Мой вопрос: что заставило keycloak выдать эту ошибку, если в одном экземпляре MySQL он работал, а в HA выдает эту ошибку?

Примечание. Раньше мне выдавались ошибки (только в среде HA, в одном случае все работает безупречно), связанные с первичным ключом, поскольку эта таблица, если вы видите в наборах изменений, не имеет первичный ключ, поэтому предыдущая ошибка была: невозможно создать таблицу . Но я отключил проверку первичного ключа (я знаю, что это не рекомендуется, и я найду другой способ, но сейчас просто чтобы выяснить причину ошибки, которую я допустил), чтобы можно было создать эту таблицу. Теперь после создания я не знаю, почему каждый раз при запуске он пытается создать эту таблицу, даже после ее создания один раз. Также из-за этого создается только 30 таблиц из 92, а затем происходит сбой.
Пожалуйста, запросите любую необходимую информацию, если я пропустил что-то, что может помочь в отладке.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»