Будет ли таблица с составными первичными ключами поддерживать групповую репликацию в innodb?

У меня есть таблица с двумя столбцами 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

Было бы очень хромым, если бы он не поддерживал такое.

Rick James 15.02.2019 02:40

Фактически, приведенная выше таблица представляет собой реляционную таблицу сопоставления с ассоциацией «многие ко многим», которая создается из спящего режима (аннотация «многие ко многим»). При этом возникает ошибка, что таблица несовместима для репликации внешней группы плагинов.

harish chava 15.02.2019 05:47

Укажите SHOW CREATE TABLE и конкретное сообщение об ошибке.

Rick James 15.02.2019 06:53

@RickJames предоставил запрошенные артефакты.

harish chava 15.02.2019 12:02

Ничего не было после «вложенное исключение»?

Rick James 16.02.2019 00:28

Пожалуйста, отправьте отчет об ошибке на bugs.mysql.com .

Rick James 16.02.2019 00:39

Требования задокументированы здесь: dev.mysql.com/doc/refman/5.7/en/…, и в нем говорится, что таблица должна иметь PRIMARY KEY (или не-NULL UNIQUE KEY), но не упоминается об отсутствии поддержки составного PK. Я не нашел ошибку об этом в bugs.mysql.com. Всего несколько случаев одной и той же ошибки для таблиц без PK или таблиц с MyISAM.

Bill Karwin 16.02.2019 00:44
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
7
745
1

Ответы 1

У вас ошибка при обновлении, а не при создании таблицы?

insert into batch_class_document_type (batch_class_id, document_type_id) values (?, ?)

Я предполагаю, что вы используете свою группу в многоосновном режиме и, как указано здесь:

https://dev.mysql.com/doc/refman/5.7/en/group-replication-deploying-in-multi-primary-or-single-primary-mode.html

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 вторичными экземплярами. Итак, мой текущий кластер уже находится в одном основном режиме.

harish chava 21.02.2019 14:25

Я протестировал эту таблицу с предыдущим созданием простых таблиц document_type и batch_class с ключами «id». В моих тестах с 5.7.25 я могу вставить в таблицу batch_class_document_type без ошибок. Итак, я предполагаю, что проблема связана с другими таблицами? Добавьте для них структуру таблицы.

Pedro Gomes 21.02.2019 17:37

Другие вопросы по теме