Проблема : Я расширяю 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 ")
Я открыт для других идей, чтобы решить эту проблему или способы решения моей проблемы:)