실행 된 "post_update"후크는 데이터베이스, key_value
테이블, post_update
콜렉션에 저장되지만 데이터는 직렬화되어 직접 업데이트하기 어색합니다.
@kiamlaluno의 답변에서 일부 세부 정보를 사용하여 단일 후크를 재설정하는 데 사용할 수 있는 drush 스크립트 를 만들었습니다 . 기본 버전은 다음과 같습니다 ( 긴 버전은 여기 ).
#!/usr/bin/env drush
$key_value = \Drupal::keyValue('post_update');
$update_list = $key_value->get('existing_updates');
$choice = drush_choice($update_list, dt('Which post_update hook do you want to reset?'));
if ($choice) {
$removed_el = $update_list[$choice];
unset($update_list[$choice]);
$key_value->set('existing_updates', $update_list);
drush_print("$removed_el was reset");
} else {
drush_print("Reset was cancelled");
}
다음은 명령 행에서 실행할 때의 모습에 대한 예입니다.
./scripts/reset_hook_post_update_NAME.drush
Which post_update hook do you want to reset?
[0] : Cancel
[1] : system_post_update_add_region_to_entity_displays
[2] : system_post_update_hashes_clear_cache
[3] : system_post_update_recalculate_configuration_entity_dependencies
[4] : system_post_update_timestamp_plugins
[5] : my_module_post_update_example_hook
# The script pauses for user input.
5
my_module_post_update_example_hook was reset