web-dev-qa-db-ja.com

異なるデータベースとWebサイトでの構成管理

中央コードベース(Gitリポジトリ)があります。このコードベースから、すでにいくつかのWebサイトを展開しました。

  • これまで、機能を使用していました。すでに運用中のWebサイトには、多くのコンテンツが含まれるデータベースがいっぱいです。
  • 今からdrupal 8構成管理に切り替えます。

セントラルコードベースでは、$config_directories[CONFIG_SYNC_DIRECTORY] = 'config/base';を設定しています。このディレクトリには、drush cex -yの後に、新しく追加した構成をデプロイするすべての構成が含まれています。

しかし私がした後:

  1. firstConfiguration installer module を使用してサイトから新規インストールし、既存のすべての構成をインポートすると、すべて正常に動作します。問題なく構成をインポートおよびエクスポートできます
  2. しかし、私は(既に運用されているサイトから)運用データベースをこのデータベースにコピーする必要があります。その後、設定をインポートできなくなりました。

しかし、既存のサイト(機能に基づく)からすべてのコンテンツが必要なため、このデータベースをコピーして戻す必要があります。

UUIDが一致しないなどのエラーが表示されます...必要なことは可能ですか?そして、それをどのように機能させるのですか?

(私はすでに正しいuuid:system.site.ymlに手動でコピーして貼り付けようとしましたが、それでも機能しませんでした)。

更新:私は自分のローカルにdockerを使用しますDrupal 8環境

6
meez

基本的に、両方のサイトが同じUUIDを共有していることを確認する必要があります。

しぶきはありますか?その場合:

古いサイトのシェル(からコピー)でUUIDを取得します

drush cget system.site uuid

( 'system.site:uuid':bfb11978-d1a3-4eda-91fb-45decf134e25-値をコピーするようなものを取得します)

次に、新しいサイトのシェルで(コピー先)UUIDを設定します

drush cset system.site uuid <your_uuid>

EG:drush cset system.site uuid bfb11978-d1a3-4eda-91fb-45decf134e25

次に、「プレースホルダー...インポートする前にこれらのエンティティを削除する必要があります」のようなエラーが発生した場合。次のコマンドを実行します。

drush ev '\Drupal::entityManager()->getStorage("shortcut_set")->load("default")->delete();'

結局、drush cim sync -yは、環境間で設定を同期できるようにする必要があります。

ソース

1
100pic

あなたができる簡単なアプローチは、サイトのuuidがconfig/sync/system.site.ymlファイル。そのため、ターミナルでcat(Linux)またはtype(Windows)を使用して、uuidをターミナルに表示できます。

cat config/sync/system.site.yml | grep uuid

そして、

// using console
drupal config:override "system.site" uuid "<new-uuid>"
// OR, using drush 
drush config-set "system.site" uuid "<new-uuid>"

ショートカットセットのプレースホルダーエラーが発生した場合

// using console
drupal entity:delete shortcut_set default
// OR, using drush 
drush ev '\Drupal::entityManager()->getStorage("shortcut_set")->load("default")->delete();'

次に、drush cim[〜#〜]または[〜#〜]drupal ci

0
Razeem Ahmad