別のサイトに構成をインポートするにはどうすればよいですか?


49

別のサイトの構成をインポートしようとすると、このエラーが発生します。

ステージングされた構成は、このサイトとは異なるサイトからのものであるため、インポートできません。このサイトの複製されたインスタンス間でのみ構成を同期できます。

10人の顧客がいますが、サイト構成を10の異なるWebサイトと同期する必要があります。
サイトUUIDは、別のWebサイトと設定を共有するための問題です。解決策はありますか?


1
別の良い答えはこちらdrupal.stackexchange.com/q/152584/39617
digitgopher

回答:


55

UUIDは次の方法で取得できます。

drush config-get "system.site" uuid

そして、あなたはそれを変更することができます

drush config-set "system.site" uuid "fjfj34-e3bb-2ab8-4d21-9100-b5etgetgd99d5"

それで、あなたは同じサイトを持たなければなりません。


私のために働いた... 3年後。ありがとう!
mrlexington

17

構成管理では、サイト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

構成インポートには別の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/


9
正しいが、サイトUUIDを変更せずに変更することは、drupalが異なるUUIDを持つすべてのフィールド/ノードタイプ/ビュー/ ...を異なるものとして扱い、最初に古いものを削除してから、再度作成すると、基本的にすべてのコンテンツが削除されます。
ベルディール

はい、ありがとうございますが、専用サーバーとLinuxの知識がないユーザーには使いやすいものではありません。基本/初心者ユーザー向けのソリューションがあります(sshとコマンドラインなし、ftpサーバーのみ)。Drushにはコマンドラインが必要であり、ユーザーにとって使いやすいものではありません。
アクセルブリッシュ

既存のDrupal WebサイトのサイトUUID(新規インストール)を変更して、エクスポートされた構成(とdrush config-set system.site uuid "abcdef-...")を一致させるとどうなりますか?
-GiDo

1
更新サイトのUUIDをコピーする1行のコマンド。drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck

10

Drupalコンソールの使用

— キーをオーバーライドすることで、Drupalコンソールで同じことを実現できます。system.siteuuid

$ 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  
------------------- -------------------------------------- -------------------------------------- 

1
これは受け入れられた答えだと思います。
バドリ

7

サイトまたはデータベースにアクセスせずに、サイトのUUIDを取得できます。

元のサイト/データベースにアクセスできない場合でも、提供されている構成ファイルから同期できます。構成にはサイトのUUIDが含まれるため、最初に設定する必要があります。

  1. config / syncディレクトリを見つけます:移動した場合、で設定された場所を見つけることができますsettings.php。以下を探します: $config_directories['sync']パスをリストします。

  2. その構成パスに移動し、ファイルを探します。system.site.yml そのファイルで、探しますuuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(明らかに異なる値になります)。その値をコピーします。

  3. 急いで、私たちが発見したのと同じサイトuuidにサイトを設定します。 drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. drushを使用して構成を同期する drush cim -y

  5. エラーが発生した場合は、それらをお読みください。私が持っていた:

    • 欠落しているモジュール(ダウンロードして有効にする必要がありました)
    • 最初に削除する必要があったショートカットモジュールのコンテンツ:
    • admin> config> User Interfact>ショートカット

それをやった後、私はcimを再実行し、すべてが魅力のように機能しました!

提供された構成から復元する前に、ローカルD8インスタンスをインストールしました。


4

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 

次のことができます。

  1. ブラウザのadmin / config / development / configuration / full / importの宛先サイトに移動します
  2. 構成アーカイブを選択し、アップロードを選択します
  3. すべての構成アイテムのリストが表示されます
  4. 下にスクロールして、[すべてインポート]ボタンをクリックします

0

Gucho Caの回答の指示に従っても問題が解決しない場合は、sync configディレクトリに書き込み権限があることを確認してください。UUIDが同じであっても、システムに書き込み権限がない場合でも、同じエラーメッセージが表示されます。

確認する良い方法は、同期セクションのインポートタブをクリックすることです。正しいファイル許可がない場合は、そこに表示されます。


0

構成インポートの前にsystem.site uuidの設定を自動化する方法

これをやり直すことにうんざりしている人々のために。私はついにこれを自動的に行う方法の修正を得ました。UUIDを設定するには、drushを使用してconfig:importのプリコマンドを追加する必要があります。ここですべてを読んでください:https : //stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.