Установка Drupal 8 с репликацией Mysql

Установка Drupal 8 с репликацией Mysql

13.12.2017 05:42:34 Просмотров 52 Источник

Я пытаюсь использовать службу Mysql из Compose.io По умолчанию эта служба имеет репликацию (3 узла) Когда я пытаюсь установить Drupal через Drush или WebUI, я получаю некоторые ошибки:

Failed to INSERT a value into a test table on your database server. We tried inserting a value with the command INSERT INTO {drupal_install_test} (id) VALUES (1) and the server reported the following error: SQLSTATE[HY000]: General error: 3098 The table does not comply with the requirements by an external plugin.: INSERT INTO {drupal_install_test} (id) VALUES (1); Array ( ) .

Failed to UPDATE a value in a test table on your database server. We tried updating a value with the command UPDATE {drupal_install_test} SET id = 2 and the server reported the following error: SQLSTATE[HY000]: General error: 3098 The table does not comply with the requirements by an external plugin.: UPDATE {drupal_install_test} SET id = 2; Array ( ) .

Failed to DELETE a value from a test table on your database server. We tried deleting a value with the command DELETE FROM {drupal_install_test} and the server reported the following error: SQLSTATE[HY000]: General error: 3098 The table does not comply with the requirements by an external plugin.: DELETE FROM {drupal_install_test}; Array ( ) .

Когда репликация включена, каждая таблица должна иметь первичный ключ, и, по-видимому, Drupal не добавляет их по умолчанию.

Есть ли обходной путь для настройки Drupal для использования базы данных Mysql с включенной репликацией?

Обратите внимание, что Compose.io не предоставляет пользователю реплики, только мастер.

У вопроса есть решение - Посмотреть?

Ответы - Установка Drupal 8 с репликацией Mysql / Drupal 8 installation with Mysql replication

Является ответом!
Bill Karwin

13.12.2017 06:10:11

Это, по-видимому, сообщение об ошибке, возвращенное новой функцией групповой репликации.

Да, групповая репликация требует, чтобы все таблицы имели первичный ключ.

https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements.html говорит:

Каждая таблица, которая должна быть реплицирована группой, должна иметь определенный первичный ключ или эквивалент первичного ключа, где эквивалентом является ненулевой уникальный ключ.

К сожалению, тестовая таблица, используемая Drupal для тестирования установки, не имеет первичного ключа (или эквивалента).

Об этом стало известно в качестве вопроса для Друпала: https://www.drupal.org/project/drupal/issues/2856362

В Drupal 8.5 или более поздней версии может быть исправление, но в то же время могут быть полезные исправления, предложенные комментаторами в этой проблеме. В принципе, вам просто нужно изменить создание таблицы drupal_install_test в нескольких файлах, чтобы:

CREATE TABLE {drupal_install_test} (id INT NOT NULL PRIMARY KEY)
https://stackoverflow.com/questions/47784729/drupal-8-installation-with-mysql-replication/47784933#comment82553626_47784933
Билл, ты мой герой! Спасибо, что поделились! Патч сработал!
Cassandra

12.11.2019 06:57:32

Легко исправить (Drupal 7)

В вашей установке.строка файла inc #307 должна быть изменена на Создать таблицу {drupal_install_test} (id int NOT NULL PRIMARY KEY)

https://stackoverflow.com/questions/47784729/drupal-8-installation-with-mysql-replication/58822303#comment103922135_58822303
Нет. Никогда не следует редактировать файлы ядра
Помочь в развитии проекта:
Закрыть X