web-dev-qa-db-ja.com

8.7以降の未処理のエンティティ更新を実行するにはどうすればよいですか?

8.7.1へのアップデート(8.6.xから)をテストしました。これには、古いエンティティ自動更新機能の削除が含まれています。つまり、drush entupが機能しなくなりました。 変更レコード を理解している限り、開発者は更新フック内で更新を実行する必要があります。ただし、コアをcomposerで更新し、データベースの更新を実行すると(エラーなしで実行されました)、ステータスレポートに警告が表示されます。

エンティティタイプとフィールド定義で次の変更が検出されました。
taxonomy_termエンティティタイプ:
モデレート状態フィールドをインストールする必要があります。

しかし、ドラッシュなしentity-update、私はここで何をすることになっているかわからない。更新を実行するにはどうすればよいですか? Drush dbupは正常に実行され(現在、未解決の更新は報告されません)、drush entupは機能しなくなりました。このエラーをどのように処理できますか?

記録のために、これは最初のdrush updbの出力ですが、関連しているかどうかはわかりません:

server:~/httpdocs$ drush updb
 ------------------- ----------------------------------------------- --------------- ----------------------------------------------------------------------------- 
  Module              Update ID                                       Type            Description                                                                  
 ------------------- ----------------------------------------------- --------------- ----------------------------------------------------------------------------- 
  system              8701                                            hook_update_n   Remove the unused 'system.theme.data' from state.                            
  system              8702                                            hook_update_n   Add the 'revision_translation_affected' entity key.                          
  file                8700                                            hook_update_n   Set the 'owner' entity key and update the field.                             
  node                8700                                            hook_update_n   Set the 'owner' entity key and update the field.                             
  taxonomy            8701                                            hook_update_n   Add an index on the 'taxonomy_term__parent' field table.                     
  menu_link_content   make_menu_link_content_revisionable             post-update     Update custom menu links to be revisionable.                                 
  system              add_expand_all_items_key_in_system_menu_block   post-update     Initialize 'expand_all_items' values to system_menu_block.                   
  system              clear_menu_cache                                post-update     Clear the menu cache.   @see https:www.drupal.orgprojectdrupalissues3044364  
  system              fix_jquery_extend                               post-update     Clear the library cache and ensure aggregate files are regenerated.          
  taxonomy            make_taxonomy_term_revisionable                 post-update     Update taxonomy terms to be revisionable.                                    
  taxonomy            remove_hierarchy_from_vocabularies              post-update     Remove the 'hierarchy' property from vocabularies.                           
  views               exposed_filter_blocks_label_display             post-update     Update exposed filter blocks label display to be disabled.                   
  views               make_placeholders_translatable                  post-update     Rebuild cache to allow placeholder texts to be translatable.                 
 ------------------- ----------------------------------------------- --------------- ----------------------------------------------------------------------------- 

 Do you wish to run the specified pending updates? (yes/no) [yes]:
 > yes

 [notice] Update started: system_update_8701
 [ok] Update completed: system_update_8701
 [notice] Update started: system_update_8702
 [ok] Update completed: system_update_8702
 [notice] Update started: file_update_8700
 [ok] Update completed: file_update_8700
 [notice] Update started: node_update_8700
 [ok] Update completed: node_update_8700
 [notice] Update started: taxonomy_update_8701
 [ok] Update completed: taxonomy_update_8701
 [notice] Update started: menu_link_content_post_update_make_menu_link_content_revisionable
 [notice] Custom menu links have been converted to be revisionable.
 [ok] Update completed: menu_link_content_post_update_make_menu_link_content_revisionable
 [notice] Update started: system_post_update_add_expand_all_items_key_in_system_menu_block
 [ok] Update completed: system_post_update_add_expand_all_items_key_in_system_menu_block
 [notice] Update started: system_post_update_add_expand_all_items_key_in_system_menu_block
 [ok] Update completed: system_post_update_add_expand_all_items_key_in_system_menu_block
 [notice] Update started: system_post_update_clear_menu_cache
 [ok] Update completed: system_post_update_clear_menu_cache
 [notice] Update started: system_post_update_fix_jquery_extend
 [ok] Update completed: system_post_update_fix_jquery_extend
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Taxonomy terms have been converted to be revisionable.
 [ok] Update completed: taxonomy_post_update_make_taxonomy_term_revisionable
 [notice] Update started: taxonomy_post_update_remove_hierarchy_from_vocabularies
 [ok] Update completed: taxonomy_post_update_remove_hierarchy_from_vocabularies
 [notice] Update started: views_post_update_exposed_filter_blocks_label_display
 [ok] Update completed: views_post_update_exposed_filter_blocks_label_display
 [notice] Update started: views_post_update_exposed_filter_blocks_label_display
 [ok] Update completed: views_post_update_exposed_filter_blocks_label_display
 [notice] Update started: views_post_update_make_placeholders_translatable
 [ok] Update completed: views_post_update_make_placeholders_translatable
 [success] Finished performing updates.
2
MoritzLost

1つのオプションは、この正確な目的のために作成された新しい Devel Entity Updates モジュールを使用することです。

#2976035:エンティティタイプのCRUD操作では、最後にインストールされたエンティティタイプとフィールドストレージ定義を使用する必要があります drush entupを実行する機能が削除されました。詳細は 関連する変更レコード を参照してください。このプロジェクトは、開発者専用ツールとしてこの機能を復元することを目的としています。このモジュールは Devel に依存しており、本番環境で有効にしたり、展開ワークフローで依存したりすることを意図していません。

3
Clive

もう一度更新フックに入れます。 your_module_name.installファイルに入れます。 (インストール時にモジュールにすでに存在していることを確認してください。それ以外の場合は、他のモジュールのインストールファイルに入れてください)

/**
 * Update- Create your_entity_name entity.
 */
function your_module_name_update_8002() {
  //check if the table exists first.  If not, then create the entity.
  if(!db_table_exists('your_entity_name')) {
    \Drupal::entityTypeManager()->clearCachedDefinitions();
    \Drupal::entityDefinitionUpdateManager()
      ->installEntityType(\Drupal::entityTypeManager()->getDefinition('your_entity_name'));
  }
  else {
    return 'your_entity_name entity already exists';
  }
}
3
Michiel

@MoritzLostで指摘されているように、drush entupは回避策です。適切な解決策は、WBMパッチに依存するか、8.7に更新する前にリリースされるのを待つことです。詳細は https://www.drupal.org/project/devel_entity_updates/issues/3082442 で入手できます。

0
plach