別のサイトの構成をインポートしようとすると、このエラーが発生します。
ステージングされた構成は、このサイトとは異なるサイトからのものであるため、インポートできません。このサイトの複製されたインスタンス間でのみ構成を同期できます。
私には10人の顧客がいて、自分のサイト構成を10の異なるWebサイトと同期する必要があります。
サイトのUUIDは、別のWebサイトと構成を共有するための問題です。解決策はありますか?
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: [email protected]
slogan: ''
page:
403: ''
404: ''
front: node
admin_compact_mode: false
weight_select_max: 100
langcode: en
構成インポートには別のUUIDがあります。次のコマンドでUUIDを確認できます
cat sites/default/config/staging/system.site.yml
そのため、次のDrushコマンドを使用してサイト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/
system.site
— uuid
キーをオーバーライドすることにより、 Drupal Console で同じことを実現できます。
$ 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
今することができます:
これを何度も繰り返すのに飽きた人のために。これを自動的に行う方法の修正をついに手に入れました。 uuidを設定するには、drushを使用してconfig:importのプリコマンドを追加する必要があります。それについてここですべて読んでください: https://stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8
Gucho Caの回答の指示に従っても問題が解決しない場合は、sync configディレクトリに書き込み権限があることを確認してください。 UUIDが同じであっても、同じエラーメッセージが表示されますが、システムには書き込み権限がありません。
確認する良い方法は、同期セクションのインポートタブをクリックすることです。正しいファイル権限がない場合は、そこに表示されます。