当我尝试导入另一个站点的配置时出现此错误:
无法导入暂存的配置,因为它源自与该站点不同的站点。您只能在此站点的克隆实例之间同步配置。
我有10个客户,我需要将我的站点配置与10个不同的网站同步。
网站UUID是与其他网站共享配置的问题。有解决方案吗?
当我尝试导入另一个站点的配置时出现此错误:
无法导入暂存的配置,因为它源自与该站点不同的站点。您只能在此站点的克隆实例之间同步配置。
我有10个客户,我需要将我的站点配置与10个不同的网站同步。
网站UUID是与其他网站共享配置的问题。有解决方案吗?
Answers:
您可以通过以下方式获取UUID:
drush config-get "system.site" uuid
你可以用
drush config-set "system.site" uuid "fjfj34-e3bb-2ab8-4d21-9100-b5etgetgd99d5"
这样,您就可以拥有相同的网站。
配置管理仅允许在同一站点或项目之间进行同步配置,以避免在将配置从站点a.com导入到b.com时出现问题,从而完成此验证Drupal 8 为每个站点生成一个UUID。
您可以通过执行以下命令来获取当前站点的UUID:
drush cget system.site
上面的命令将具有与下一个清单类似的输出:
uuid: 236fa77c-d83e-42de-8a03-03c574c00160
name: Drupal 8
mail: user@example.com
slogan: ''
page:
403: ''
404: ''
front: node
admin_compact_mode: false
weight_select_max: 100
langcode: en
config导入具有不同的UUID,您可以使用以下命令确认UUID
cat sites/default/config/staging/system.site.yml
因此,您需要使用以下Drush命令更改Site UUID的值:
drush cedit system.site
上面的命令使您可以使用喜爱的文本编辑器来设置登台配置文件中存在的相同UUID。
cat sites/default/config/staging/system.site.yml
更改UUID并更改权限后,如果再次访问example.com/admin/config/development/configuration页面,您将看到所有更改,删除,重命名和添加。
来源:http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/
drush config-set system.site uuid "abcdef-..."
),会发生什么情况?
drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
您可以通过覆盖- 键来使用Drupal Console实现相同的目的。system.site
uuid
$ drupal config:override
然后在出现提示时输入配置名称system.site
,配置密钥uuid
和适当的值。
Enter configuration name [advagg.settings]:
> system.site
Enter the configuration key [uuid]:
> uuid
Enter the configuration value:
> 656165f1-1017-45a1-9bd8-f70e31cf29ab
Configuration name system.site
------------------- -------------------------------------- --------------------------------------
Configuration key Original Value Override Value
------------------- -------------------------------------- --------------------------------------
uuid 7622bb19-5f3f-452d-82a3-c0a88241e789 656165f1-1017-45a1-9bd8-f70e31cf29ab
------------------- -------------------------------------- --------------------------------------
您可以获取站点UUID,而无需访问站点或数据库。
如果您无权访问原始站点/数据库,则仍可以从提供的配置文件中进行同步。该配置将包含您站点的UUID,因此您需要先进行设置。
查找您的config / sync目录:如果已移动,则可以在中找到它的设置位置settings.php
。查找:
$config_directories['sync']
,它将列出路径。
转到该配置路径,然后查找文件:system.site.yml
在该文件中查找uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3
(显然会有一个不同的值)。复制该值。
在drush中,将您的网站设置为我们刚刚发现的同一网站uuid:
drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3
使用drush同步配置
drush cim -y
如果发现错误,请阅读。我有:
一旦这样做,我就重新启动了cim,一切都变得像个魅力!
在尝试从提供的配置中还原之前,我已经安装了本地D8实例。
您可以使用drush cset和drush cget更改目标站点的UUID。
首先获取源UUID:
$ cd ~/Sites/sourcesite <-- your drupal site root
$ drush cget system.site uuid
This will return something like:
'system.site:uuid': 86b376c5-385e-4d13-bf00-e5e5443540e3
替换目标UUID
cd ~/Sites/destinationsite <-- your drupal site root
$ drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3
现在你可以: