drush updb命令有问题,它找不到自定义模块的钩子更新。我注意到模块安装将模块的名称字符串保存在数据库、表"key_value“和BLOB文件中。
表key_value:

BLOB文件:

我在mymodule.post_update.php上的更新:

由于它存在于数据库中,因此该命令似乎认为在不执行钩子时会执行它。有没有什么办法来解决这个问题?我的网站在9.5.4里。
发布于 2023-03-16 20:16:27
听起来你想在新安装的模块上运行更新钩子。那么您应该使用部署钩子。其他更新和更新后挂钩,他们也运行新安装的模块。唯一的要求是在您的部署例程中运行drush deploy:hook,或者只是从drush updb切换到drush deploy,后者已经包含了drush updb和drush deploy:hook,并且按正确的顺序运行一切。
(drush cim将启用模块,最终drush deploy:hook将选择部署钩子。)
创建一个文件MYMODULE.deploy.php,并在其中放置MYMODULE_deploy_NAME(&$sandbox)和go。
发布于 2023-03-16 16:14:15
existing_updates中列出的任何更新函数都已被执行,Drupal不会再次执行它(更新后的钩子通常对内容进行操作,您不希望无意中运行这类更新)。
如果您确信执行该函数的内容是解决问题的正确方法,那么只需将函数名更改为以前从未执行过的内容。
https://drupal.stackexchange.com/questions/315086
复制相似问题