Drupal 8:来自不同站点的配置
将配置导入Drupal站点时的一个问题可能是一条消息,告诉您您尝试导入的配置来自另一个站点。
这是可以在配置同步页面上看到的错误。
Thestagedconfigurationcannotbeimported,becauseitoriginatesfromadifferentsitethanthissite.Youcanonlysynchronizeconfigurationbetweenclonedinstancesofthissite.
发生此错误是因为站点(在数据库中)的UUID与配置中(在代码中)的UUID不同。代码中的UUID存储在配置文件system.site.yml中。此检查的原因是为了确保您不会通过安装从另一个站点创建的配置来破坏您的Drupal站点。
如果数据库和代码之间的UUID不匹配,则Drupal将拒绝接受它并且不会导入您的配置。这种情况可能是由于您安装了站点的新副本并需要在顶部导入现有配置。当站点安装生成一个新的UUID时,两者将不同,Drupal不会安装您的配置。
有一种方法可以解决这个问题,只要您确定这是您想要的。
解决此问题的最简单方法是使用数据库中的值覆盖配置中的值。第一步是使用Drush找出数据库中的值。以下命令将打印出您的站点UUID。
$ drush config-get "system.site" uuid 'system.site:uuid': d6eb07f8-16d0-4c62-8fac-7e1cc2cc7046
使用它,您可以更改system.site.yml顶部的UUID。
uuid: d6eb07f8-16d0-4c62-8fac-7e1cc2cc7046 name: 'My Awesome Drupal Website' mail: [email protected] slogan: 'Drupal site' page: 403: '' 404: '' front: /homapge admin_compact_mode: false weight_select_max: 100 langcode: en default_langcode: en _core: default_config_hash: ... mail_notification: ''
您还可以通过强制您的站点具有特定的UUID来反向运行此操作。可以通过以下方式从system.site.yml文件中获取UUID并将其应用到站点。
$ drush config-set "system.site" uuid "d6eb07f8-16d0-4c62-8fac-7e1cc2cc7046" Do you want to update uuid key insystem.siteconfig? (yes/no) [yes]: > yes
这两种机制都将允许您像往常一样导入配置。