В настоящее время я переношу свой MySQL 5.7 из режима одного узла в режим нескольких узлов с групповой репликацией. В этом режиме все таблицы должны определять первичный ключ .
Моя проблема возникает из моего приложения Spring Boot, где у меня есть несколько @ElementCollection
s из @Embeddable
s. Очевидно, что таблицы этих Embeddable
не определяют первичный ключ. Когда я пытаюсь вставить что-то в БД, я получаю следующее исключение, потому что в таблицах ElementCollection
отсутствует первичный ключ.
java.sql.SQLException: The table does not comply with the requirements by an external plugin.
Итак, теперь мне интересно, как решить эту проблему самым простым способом. возможный способ.
В этом сообщении говорится, что невозможно добавить какой-то первичный ключ в ElementCollection
таблицы. Итак, единственный способ решить эту проблему - переключить отношения ElementCollection
s на OneToMany
с сущностями вместо встраиваемых объектов? Как мне сделать это элегантным способом для ElementCollection
s из String
s и Enum
s?
Или я могу просто добавить миграцию БД, где я добавляю автоматически увеличивающийся первичный ключ для всех затронутые таблицы?
Есть ли еще какие-то вещи, о которых мне следует знать при переключении на групповую репликацию?