数据库更新故障排除
在开始排查数据库更新相关问题之前,请务必先备份数据库和代码库。
如果存在阻止数据库更新安全运行的问题,update.php 将显示错误信息。
请仔细阅读错误消息,以便针对性地解决问题。
无效的模块或主题
在某些情况下,update.php 可能会提示存在无效的模块或主题。当某个模块或主题在配置文件 core.extension.yml 中被声明,但其文件缺失或与网站不兼容时,就会发生这种情况。
排查此问题时,首先要确认您没有导入错误版本的 core.extension.yml 配置文件。然后根据具体的错误信息进一步解决问题。问题解决后,重新运行 update.php。
模块或主题缺失
1. 如果 update.php 报告模块或主题缺失,且 core.extension.yml 文件无误,请确认该模块或主题是否存在于网站代码库中。
- 例如,检查 [site-root]/modules 和 [site-root]/sites/all/modules,查找与缺失模块名称匹配的文件夹。[site-root]/modules 的优先级高于 [site-root]/sites/all/modules,但系统会扫描这两个目录。
2. 如果该文件夹完全不存在,请在 Drupal.org 模块库中查找该模块,并重新下载到模块目录中。请确保下载与您所用 Drupal 版本兼容的版本。
3. 如果文件夹存在,但内部文件缺失或已损坏,也可以在 Drupal.org 模块库中重新下载对应版本。确保版本兼容,然后用新版本覆盖现有文件夹。
4. 如果模块并非从 Drupal.org 下载,请尝试找到其原始来源。
- 如果模块属于您网站的自定义开发,请尝试找到原始副本并重新放入 modules 文件夹。
- 如果模块来自第三方(例如托管于 GitHub),请找到有效版本并重新下载。
5. 如果仍无法找到该模块,您可以尝试从 core.extension.yml 文件中删除其记录。注意,这可能会导致网站出现其他严重错误。
6. 当模块恢复后,重新运行 update.php。
模块或主题与已安装的 Drupal 版本不兼容
1. 如果 update.php 提示模块或主题与当前 Drupal 版本不兼容,则您需要更新 Drupal 核心或该模块 / 主题。
2. 首先在“报告 > 状态报告”(Reports > Status report)页面查看当前 Drupal 核心版本。
3. 然后在模块路径 modules/modulename/modulename.info.yml 文件中查看版本声明。文件顶部通常包含以下任一行:
core: 8.x core_version_requirement: ^8.8 || ^9
表示该模块兼容 Drupal 8.8+ 和 Drupal 9。此时 core: 8.x 可选可无。(了解更多关于 core_version_requirement 的信息)
core_version_requirement: ^9
表示该模块仅兼容 Drupal 9。
core: 8.x
表示该模块仅兼容 Drupal 8。
core: 7.x
表示该模块仅兼容 Drupal 7。
4. 如果您的 Drupal 核心版本过低,请下载并升级核心。
5. 如果模块版本过低,请下载或安装其兼容的更新版本。
6. 如果找不到兼容版本,可能需要从备份中恢复网站的旧版本。
7. 当 Drupal 核心与模块 / 主题均为兼容版本时,重新运行 update.php。
模块或主题与已安装的 PHP 版本不兼容
1. 如果模块或主题与当前 PHP 版本不兼容,请在 modules/modulename/modulename.info.yml 文件中查找类似以下的声明:
php: 7.3
2. 方案一:安装支持您网站 PHP 版本的模块或主题版本。
3. 方案二:将您网站的 PHP 版本更改为与模块兼容的版本。
4. 当 PHP 版本与模块 / 主题均兼容后,重新运行 update.php。