【问题标题】:Drupal 8.5.1 Upgrade Errors - Where to Look for Troubleshooting?Drupal 8.5.1 升级错误 - 在哪里寻找故障排除?
【发布时间】:2018-10-05 11:31:32
【问题描述】:

我正在将网站从 8.3.5 升级到 8.5.1

我更新了代码库,通过 composer 配置了模块,并使用 cgr 升级了我的 drush 安装,并在安装中运行 drush 9。我让这个网站在我本地环境中的开发数据库上运行得很好

我正在将数据库从生产服务器移植到开发环境中。在本地开发环境中使用 Acquia DevDesktop 2。 我可以运行 drush status 并且一切似乎都很好:

数据库主机名:127.0.0.1
数据库端口:33067
数据库用户名:drupaluser
数据库名称:site_migration_851
数据库:已连接
Drupal 引导程序:成功
默认主题:site_theme
管理主题:七
PHP 二进制文件:/Applications/DevDesktop/php5_6/bin/php
PHP 配置:/Applications/DevDesktop/php5_6/bin/php.ini
PHP 操作系统:达尔文
Drush 脚本:/Volumes/Video_Drive/web/DrupalProjects/site-mig ration-851/vendor/drush/drush/drush Drush 版本:9.2.3
冲程温度:/tmp
Drush 配置:/Volumes/Video_Drive/web/DrupalProjects/site-mig ration-851/vendor/drush/drush/drush.yml 安装配置文件:标准
Drupal 根目录:/Volumes/Video_Drive/web/DrupalProjects/site-mig ration-851 站点路径:站点/默认
文件,公共:站点/默认/文件
文件,临时:/tmp

我无法在浏览器中加载网站,我收到以下错误:

网站遇到意外错误。请再试一次 后来.Symfony\Component\HttpKernel\Exception\NotFoundHttpException: 在 Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest() 中找不到“GET /”的路由 (vendor/symfony/http-kernel/EventListener/RouterListener.php 的第 144 行)。

Drupal\Core\Routing\AccessAwareRouter->matchRequest(Object) (线:114) Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(Object, 'kernel.request',对象) call_user_func(数组,对象, 'kernel.request',对象)(行:111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.request', 对象)(行:127) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (第 68 行) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (行: 57) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)(行: 47) Drupal\Core\StackMiddleware\KernelPreHandle->句柄(对象,1, 1) (行: 47) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (行: 50) Drupal\Core\StackMiddleware\NegotiationMiddleware->句柄(对象, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (行:664)Drupal\Core\DrupalKernel->handle(Object)(行:19)

当我运行 drush cr 时,我收到以下错误: [错误] 由于不可恢复的错误,Drush 命令异常终止。 错误:调用 /Volumes/web/DrupalProjects/site-migration-851/core/includes/common.inc 中未定义的函数 system_rebuild_module_data(),第 1123 行

我尝试使用令牌运行 /core/rebuild.php,生成良好,但报错并显示与上述相同的消息。

在阅读了其他人在这里和 drupal 社区网站上的经历后,我手动截断了数据库中的“cache_”表。

我还检查了配置管理器设置,uuid 与旧的开发数据库相同。我重置了它,尝试对 prod db 运行同步更改,但没有任何改变。

仍然无法使用 prod DB 加载站点。目标是让代码库与生产数据库一起运行,因为它具有正确的内容等。

生产数据库中是否存在干扰核心旋转正确路由的内容?

更新:

我重新运行了 composer update 和 composer install 能够成功进入 /core/install.php 页面。 它告诉我安装了drupal。 重新开始的第一个选项是不可取的,因为我需要保留内容数据。

当我转到 /update.php 网址时

网站遇到意外错误。请稍后再试。 Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: 您请求了一个不存在的服务“access_check.db_update”。在 Symfony\Component\DependencyInjection\ContainerBuilder->getDefinition() (第 1024 行 供应商/symfony/dependency-injection/ContainerBuilder.php)。 Symfony\Component\DependencyInjection\ContainerBuilder->getDefinition('access_check.db_update') (行:591) Symfony\Component\DependencyInjection\ContainerBuilder->doGet('access_check.db_update', 1) (行: 569) Symfony\Component\DependencyInjection\ContainerBuilder->get('access_check.db_update') (行:182)Drupal\Core\Update\UpdateKernel->handleAccess(Object, 对象)(第 99 行)Drupal\Core\Update\UpdateKernel->handleRaw(Object) (Line: 73) Drupal\Core\Update\UpdateKernel->handle(Object) (Line: 28)

当我转到网站首页时,它会返回:

网站遇到意外错误。请再试一次 后来.Drupal\Component\Plugin\Exception\PluginNotFoundException: “节点”实体类型不存在。在 Drupal\Core\Entity\EntityTypeManager->getDefinition() (core/lib/Drupal/Core/Entity/EntityTypeManager.php 的第 133 行)。

Drupal\Core\Entity\EntityTypeManager->getHandler('node', 'storage')(第 169 行) Drupal\Core\Entity\EntityTypeManager->getStorage('node') (线:79) Drupal\Core\Entity\EntityManager->getStorage('node') (行:100) Drupal\Core\ParamConverter\EntityConverter->convert('43', 数组,“节点”,数组)(行:100) Drupal\Core\ParamConverter\ParamConverterManager->convert(Array) (行:45) Drupal\Core\Routing\Enhancer\ParamConversionEnhancer->enhance(Array, 对象)(行:259) Drupal\Core\Routing\Router->applyRouteEnhancers(Array, Object) (行:130) Drupal\Core\Routing\Router->matchRequest(Object) (行: 90) Drupal\Core\Routing\AccessAwareRouter->matchRequest(对象) (线:114) Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(Object, 'kernel.request',对象) call_user_func(数组,对象, 'kernel.request',对象)(行:111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.request', 对象)(行:127) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (第 68 行) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (行: 57) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)(行: 47) Drupal\Core\StackMiddleware\KernelPreHandle->句柄(对象,1, 1) (行: 47) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (行: 50) Drupal\Core\StackMiddleware\NegotiationMiddleware->句柄(对象, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (行:664)Drupal\Core\DrupalKernel->handle(Object)(行:19)

运行 drush dbup & entup 返回以下错误:

致命错误:调用未定义的函数 system_rebuild_module_data() 在 /web/DrupalProjects/site/site/core/includes/update.inc 第 46 行

另外 drush entup 会产生以下状态,然后报错

[成功] 不需要实体架构更新 致命错误:调用未定义的函数 system_rebuild_module_data() 在 /web/DrupalProjects/site/site/core/includes/common.inc 在线 1123 [成功] 完成执行更新。

很奇怪。

【问题讨论】:

    标签: php mysql drupal drupal-8 drush


    【解决方案1】:

    除非您的默认设置正确,否则您不能直接使用CREATE DATABASE

    尝试使用CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 再次创建它,然后运行导入。

    【讨论】:

      【解决方案2】:

      请遵循以下流程。所有你需要在腻子中使用它。

      1) 在主 drupal 站点文件夹之外的某个位置安装新的 Drupal。

      wget https://ftp.drupal.org/files/projects/drupal-8.5.1.tar.gz
      

      2) 解压此文件

      tar -xvf drupal-8.5.1.tar.gz
      

      3) 转到新安装的 drupal 根目录并删除模块、主题、站点文件夹。例如。

      rm -rf modules
      rm -rf sites
      rm -rf themes
      

      4) 现在回到根目录并点击下面的代码。

        yes|cp -R drupal-8.5.1/* your_original_drupal_folder_name/
      

      5) 之后,只需转到您的 drupal 根目录并运行 composer update 命令。

      6) 最后运行drush updb

      【讨论】:

        【解决方案3】:

        按照以下步骤将 Drupal 从 8.3.5 升级到 8.5.1

        1. 更改 composer.json 文件中的行,即“d​​rupal/core”:“^8.5.1”。
        2. 运行 composer update(它会自行下载所有基于 Drupal 8.5.1 的依赖)

        然后有两种方式运行 Drupal Update 1. 通过 URL 域/update.php 或 2. 快速更新b

        注意:如果 composer.lock 位于根位置,请删除它。

        【讨论】:

          【解决方案4】:

          从根目录中删除供应商目录后。请仅运行 composer update 命令。 它将做什么,它只会安装基于新 Drupal 版本的所有依赖项。

          如果您想要整个升级过程,请告诉我。

          谢谢!

          【讨论】:

            【解决方案5】:

            很抱歉挖掘了一个 5 个月前的问题,我在将 Drupal 8.5 站点更新到 8.6 时遇到了同样的错误。我不能丢失数据库中的任何数据,因此使用新数据库对我不起作用;我在运行/update.php 中途遇到了上述错误。我最终通过删除整个/vendor 目录并重新运行让我的工作:

            • composer install
            • composer update
            • drush cr

            【讨论】:

              【解决方案6】:

              按照这些步骤进行

              • composer update
              • drush updb
              • drush entup

              【讨论】:

                【解决方案7】:

                运行这些命令以获得对升级后 Drupal 的依赖。

                composer update
                composer install
                

                【讨论】:

                • 您好 Samsher,感谢您的回复!我尝试了您的建议,但没有解决问题,如果您有更多反馈或建议,请参阅上文。
                • Erik,我确信更新的 Drupal 中缺少一些依赖项。您能否删除数据库并安装新数据库或检查它是否适用于新数据库。如果它甚至在新数据库上也不起作用,那么 100% 肯定缺少依赖。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-09-25
                • 2019-10-01
                • 1970-01-01
                相关资源
                最近更新 更多