У меня есть таблица с двумя столбцами col1, col2, которые являются составными первичными ключами. Будет ли эта таблица поддерживать групповую репликацию в кластере MySQL InnoDB?
Сообщение об ошибке:
org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [/* insert collection row com.domain.BatchClass.documentTypes */ insert into batch_class_document_type (batch_class_id, document_type_id) values (?, ?)]; SQL state [HY000]; error code [3098]; The table does not comply with the requirements by an external plugin.; nested exception is
ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ:
CREATE TABLE `batch_class_document_type` (
`batch_class_id` bigint(20) NOT NULL,
`document_type_id` bigint(20) NOT NULL,
PRIMARY KEY (`batch_class_id`,`document_type_id`),
KEY `FKB72AFCD2997AC796` (`document_type_id`),
KEY `FKB72AFCD2C473EFCA` (`batch_class_id`),
CONSTRAINT `FKB72AFCD2997AC796` FOREIGN KEY (`document_type_id`)
REFERENCES `document_type` (`id`),
CONSTRAINT `FKB72AFCD2C473EFCA` FOREIGN KEY (`batch_class_id`)
REFERENCES `batch_class` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Фактически, приведенная выше таблица представляет собой реляционную таблицу сопоставления с ассоциацией «многие ко многим», которая создается из спящего режима (аннотация «многие ко многим»). При этом возникает ошибка, что таблица несовместима для репликации внешней группы плагинов.
Укажите SHOW CREATE TABLE и конкретное сообщение об ошибке.
@RickJames предоставил запрошенные артефакты.
Ничего не было после «вложенное исключение»?
Пожалуйста, отправьте отчет об ошибке на bugs.mysql.com .
Требования задокументированы здесь: dev.mysql.com/doc/refman/5.7/en/…, и в нем говорится, что таблица должна иметь PRIMARY KEY (или не-NULL UNIQUE KEY), но не упоминается об отсутствии поддержки составного PK. Я не нашел ошибку об этом в bugs.mysql.com. Всего несколько случаев одной и той же ошибки для таблиц без PK или таблиц с MyISAM.






У вас ошибка при обновлении, а не при создании таблицы?
insert into batch_class_document_type (batch_class_id, document_type_id) values (?, ?)
Я предполагаю, что вы используете свою группу в многоосновном режиме и, как указано здесь:
If a transaction executes against a table that has foreign keys with cascading constraints, then the transaction fails to commit when synchronizing itself with the group.
Вы нарушили это ограничение. Я предлагаю попробовать запустить его в режиме Single Primary.
Я создал кластер песочницы MySQL с 3 узлами, 1 первичным экземпляром и 2 вторичными экземплярами. Итак, мой текущий кластер уже находится в одном основном режиме.
Я протестировал эту таблицу с предыдущим созданием простых таблиц document_type и batch_class с ключами «id». В моих тестах с 5.7.25 я могу вставить в таблицу batch_class_document_type без ошибок. Итак, я предполагаю, что проблема связана с другими таблицами? Добавьте для них структуру таблицы.
Было бы очень хромым, если бы он не поддерживал такое.