Изменение значения генератора гибернации с приращения на собственное - PullRequest
0 голосов
/ 11 ноября 2019

Проблема : Я расширяю 1 сервер, настройку 1 дБ на установку 2 сервера, 1 дБ. Я запускаю Spring и загружаюсь в спящий режим как ORM. Каждая таблица в настоящее время помечена:

@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "id")

. Пример ddl может выглядеть примерно так:

create table drugs

(id                 bigint               not null
    primary key, ....)

Это дает ошибку сброса при запуске 2 серверов, так как каждое приложениесервер будет проверять только текущий индекс при инициализации, а затем вслепую увеличивать идентификатор.

Мой текущий подход: Чтобы избежать этого, я хочу, чтобы БД установила ключи и спящий режим для реализации «родного»- стратегия и, следовательно, добавление АВТОМАТИЧЕСКОГО УВЕЛИЧЕНИЯ к полностью готовым существующим ПЕРВИЧНЫМ КЛЮЧАМ.

Проблема заключается в том, что для каждой таблицы существует несколько ограничений внешнего ключа. Поэтому я попытался добавить автоинкремент при запуске SET FOREIGN KEY CHECK = 0

LOCK TABLES
drugs WRITE;
SET FOREIGN_KEY_CHECKS = 0;
ALTER table drugs DROP PRIMARY KEY;
ALTER TABLE drugs MODIFY id bigint PRIMARY KEY AUTO_INCREMENT NOT NULL ;

SET FOREIGN_KEY_CHECKS = 1;
UNLOCK TABLES ;

Но получаю ошибку

(ошибочно: 150 "Ограничение внешнего ключа неверноFormed ")

Я открыт для других идей, чтобы решить эту проблему или способы решения моей проблемы:)

...