web-dev-qa-db-fra.com

Comment effectuer des mises à jour d'entités en attente après 8.7?

Je viens de tester la mise à jour vers 8.7.1 (à partir de 8.6.x) qui inclut la suppression de l'ancienne fonctionnalité de mise à jour automatique des entités, ce qui signifie drush entup ne fonctionne plus. Pour autant que je comprenne le change record , les développeurs doivent maintenant effectuer les mises à jour dans les hooks de mise à jour. Cependant, après avoir mis à jour le noyau avec composer et effectué la mise à jour de la base de données (qui s'est déroulée sans aucune erreur), je reçois un avertissement dans le rapport d'état:

Les modifications suivantes ont été détectées dans le type d'entité et les définitions de champ.
type d'entité taxonomy_term:
Le champ État de modération doit être installé.

Mais sans le drush entity-update, Je n'ai aucune idée de ce que je suis censé faire ici. Comment effectuer la mise à jour? Drush dbup s'est déroulé avec succès (et ne signale plus aucune mise à jour en attente), ce qui ne fonctionne plus avec drush entup. Comment gérer cette erreur?

Pour mémoire, il s'agit de la sortie de la première mise à jour drush, je ne sais pas si elle est pertinente:

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

Une option consiste à utiliser le nouveau module Devel Entity Updates , qui a été construit dans ce but précis:

Dans # 2976035: Les opérations CRUD de type d'entité doivent utiliser le dernier type d'entité installé et les définitions de stockage sur le terrain la possibilité d'exécuter l'entraînement drush a été supprimée, voir l'enregistrement de modification connexe pour plus de détails . Ce projet vise à restaurer cette fonctionnalité en tant qu'outil réservé aux développeurs. Ce module dépend de Devel et n'est pas censé être activé dans les environnements de production ou utilisé dans les workflows de déploiement.

3
Clive

Remettez-le dans un crochet de mise à jour. Placez-le dans le fichier your_module_name.install. (Assurez-vous qu'il existait déjà dans le module lors de l'installation, sinon placez-le dans un autre fichier d'installation des modules)

/**
 * 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

Comme l'a souligné @MoritzLost, en s'appuyant sur drush entup est une solution de contournement. La solution appropriée serait de s'appuyer sur le correctif WBM ou d'attendre qu'il soit publié avant de mettre à jour vers 8.7. Plus de détails disponibles sur https://www.drupal.org/project/devel_entity_updates/issues/3082442 .

0
plach