mysql - 使用 Mysql 复制的 Drupal 8 安装

标签 mysql drupal drupal-8

我正在尝试使用来自 Compose.io 的 Mysql 服务 默认情况下,此服务具有复制(3 个节点) 当我尝试通过 Drush 或 WebUI 安装 Drupal 时,出现了一些错误:

无法将值插入数据库服务器上的测试表。我们尝试使用命令 INSERT INTO {drupal_install_test} (id) VALUES (1) 插入一个值,服务器报告以下错误:SQLSTATE[HY000]: General error: 3098 该表不符合外部插件的要求。 : 插入 {drupal_install_test} (id) VALUES (1);数组 ( ) .

无法更新数据库服务器上测试表中的值。我们尝试使用命令 UPDATE {drupal_install_test} SET id = 2 更新一个值,服务器报告了以下错误:SQLSTATE[HY000]: General error: 3098 The table does not compliance the requirements by an external plugin.: UPDATE {drupal_install_test } 设置 id = 2;数组 ( ) .

无法从数据库服务器上的测试表中删除值。我们尝试使用命令 DELETE FROM {drupal_install_test} 删除一个值,服务器报告了以下错误: SQLSTATE[HY000]: General error: 3098 The table does not compliance the requirements by an external plugin.: DELETE FROM {drupal_install_test};数组 ( ) .

当复制开启时,每个表都需要有一个主键,显然 Drupal 默认不添加这些。

是否有任何解决方法可以将 Drupal 配置为使用启用复制的 Mysql 数据库?

请注意,Compose.io 不会向用户公开副本,只会向用户公开主副本。

最佳答案

这显然是新的 Group Replication 返回的错误消息特征。

是的,Group Replication 要求所有表都有一个主键。

https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements.html说:

Every table that is to be replicated by the group must have a defined primary key, or primary key equivalent where the equivalent is a non-null unique key.

不幸的是,Drupal 用于测试安装的测试表没有主键(或等效项)。

这已作为问题报告给 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)

关于mysql - 使用 Mysql 复制的 Drupal 8 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784729/

相关文章:

apache - drupal 未在 default/files/中加载 js/css 文件

drupal - 如何通过 Drupal 8 中的模块修改节点的主体

drupal - 查看: Exclude nodes that have the same taxonomy term id(s) as current node

c# - MySQL Connector/Net EF 数据库第一个空间数据类型

MySQL 查询返回多个求和和分组列

java - 使用 JDBC Ping MySQL 服务器

php - 从 views_php 过滤器返回 TRUE 未按预期工作

php - 如何使用另一个表中的值从表中选择数据

svg - Drupal SVG 站点 Logo 显示不正确

drupal - 如何在 Drupal 8 Twig 模板中使用图像样式?