我正在从一个旧的Drupal 8站点迁移到新的Drupal 9站点:
我开发了一个从D8数据库获取数据的源插件:
我的迁移可以工作,但它不会迁移我的所有内容并得到以下错误:
Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE23000:完整性约束违反: 1062重复条目'8a7e1ba8-9b75-4813-80d6-99104c82efa5‘用于键’node_field_uuid__value‘:插入{node} ("vid“、"type”、"uuid“、"langcode")值(:db_insert_placeholder_0、:db_insert_placeholder_1、:db_insert_placeholder_2、:db_insert_placeholder_3);
当我调试这个问题时,我发现有些已翻译的节点具有相同的nid、vid,只有langcode与下面的示例不同。
我将langcode作为id添加到我的源代码插件中,但是它没有帮助:
public function getIds() {
return [
'nid' => [
'type' => 'integer',
'alias' => 'n',
],
'langcode' => [
'type' => 'string',
'alias' => 'n',
],
];
}
如何迁移这些节点?
已使用的模块:迁移/迁移加上/迁移工具。
Drupal版本: 9.0.3
发布于 2020-08-21 07:51:38
我发现有些翻译后的节点有相同的nid vid,只有langcode是不同的。
当使用翻译时,这是正常的。
然而,不正常和不正常的事情:
重复输入'8a7e1ba8-9b75-4813-80d6-99104c82efa5‘用于键’node_field__vid_value‘:插入{node} ("vid“、"type”、"uuid“、"langcode")
普遍唯一的IDentifier不可能是相同的,必须是唯一的。错误告诉您,节点表中有两个或多个节点,具有相同的UUID。
因此,要么D8中有两个或多个具有相同UUID的节点,要么您的节点已经迁移到D9,但是您的迁移没有看到并跳过它。
如果这两个节点都在D8上,当您发现哪些节点具有相同/重复的UUID时,可以通过duplicate并重新创建它。以防万一,检查另一个没有被删除,因为它有相同的UUID。
https://drupal.stackexchange.com/questions/296129
复制相似问题