“源数据库不包含可识别的Drupal版本。”


9

我在本地Ubuntu桌面15.10 Apache2(2.4.12)环境中安装了两个Drupal站点:一个是Drupal 8的全新安装,第二个是使用Drupal 7构建的现有工作站点的副本(主要是核心模块)基于网页,非常不起眼)。两个站点在任何地方都可以正常工作,没有任何问题。

我的目标是首先将Drupal 7站点升级到Drupal8。我完成了所有初步阶段,例如配置相同的语言,通过模块保持最少的数量(卸载D7站点中的所有模块,这些模块我可以在升级后轻松带回) ),确保在两个站点中都安装了相同的模块,等等,现在我只想将我的Drupal 7站点“超越”(希望它有一个好的用语)到新的Drupal 8站点中。

为了实现我的目标,我在Drupal 8站点中安装了Drupal升级模块,转到localhost / sitename / upgrade,并填写了Drupal 7站点的所有详细信息。

当我单击“查看升级”按钮时,出现错误:

源数据库不包含可识别的Drupal版本。

我已将此错误搜索为确切的短语(“错误”),却发现很少的结果;在我看来,他们中的大多数人似乎都需要我已经获得的PHP编程知识,因此我无法确定错误是由于错误(尤其是由于该模块仍在繁重的开发中)还是由于我的错误造成的。了解此模块的概念\功能。

  1. D8 Drupal升级模块不喜欢我提供的D7数据库的原因是什么?特别是当Drupal 7网站在网上和本地都可以正常工作时。

  2. 如果由于某种原因无法升级,迁移将是升级的一个不错的选择吗?如果是这样,那么您可以想到的最佳,最简单的迁移解决方案是什么?

在此处输入图片说明

我去了/var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php,并做了:

-- return $version_string ? substr($version_string, 0, 1) : FALSE;

++ return 7;
++ return $version_string ? substr($version_string, 0, 1) : FALSE;

比在屏幕顶部出现此错误。

在此处输入图片说明


1
我只能看到它不像该数据库包含Drupal 7安装那样,就像错误所指出的那样。您的配置中某些地方出了问题,或者您没有将其导入到期望的位置。
贝迪尔(Berdir)2015年

为什么不喜欢DB?具有该数据库的D7站点运行良好,没有任何问题...

1
哦,@ Berdir的“配置”对D8站点的Drupal升级模块中的conf意味着什么?我确定我在所有需要的地方填满了细节,我会检查是否错过了任何东西……您认为我错过了什么?...

您是否尝试过127.0.0.1而不是localhost?(因为使用您当前的升级配置可能根本无法访问数据库)
leymannx

对不起,我认为我的理解是...您可以改写您写的内容吗?非常感谢!!!

Answers:


4

在此阶段,我认为没有simple从7升级到8 的选项。您可以在发行说明中看到:

准备就绪后,Drupal 8核心还将包含迁移模块,以将现有Drupal 7和6站点直接更新为Drupal 8。在Drupal 8.0.0中,Migrate被标记为“实验性”,但在即将发布的版本中将完全支持Migrate。 https://www.drupal.org/news/drupal-8.0.0-发布

一些幕后技术:从7到8版本,它们在构建站点时保持相同的概念(例如节点,实体,权限,视图...),但不是核心。我会说:他们将所有内容都更改为OOP,Symfony组件,体系结构...因此upgrade,您必须直接从体面版本到8.0 无法直接访问您的drupal网站migrate。这是该migrating过程的外观:

  1. 重新创建具有与d7站点相同功能的站点。
  2. 重新创建主题(使用树枝模板)
  3. 迁移内容

(不幸的是)此过程的成本与重新创建一个新站点或更多站点相同。如果没有,请按阶段2看一下本文:https : //www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/


我已经开始在Drupal 8中手动构建一个重写的站点。确实,我在D7中使用的许多模块都进入了内核,这确实是一件好事。我希望当我即将迁移到Drupal 9时,迁移技术将达到一种状态,可以在不同的上下文,节点页面数据和元数据,节点重定向,文件,视图,面板,一切都尽可能拥有自己...将流程

抱歉,无法应用:我刚刚在下面发布了我的答案,并提供了有关最有可能发生的事情的具体详细信息,请参见。当然,赏金与您同在。

2

您的错误信息与所述字符串完全匹配包含在行在http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40的“DRUPAL升级”模块(的代码内的https:/ /www.drupal.org/project/migrate_upgrade)。

它表明它不是错误,而是“抛出异常”。查看该代码的前三行,我认为这只是建立连接的一个问题。

也许这也有帮助:

  • 来自问题https://www.drupal.org/node/2628440的报价(注释3):

    为了检查源数据库是否是有效的Drupal数据库并确定数据库的版本,升级过程将查看“系统”表-该表是否存在于您以表格形式指定的数据库中?该数据库中的Drupal安装是否带有前缀(如果是,您是否在表单的“高级选项”部分中输入了前缀)?”。

  • 在同一问题后跟注释nr 4:“提供表前缀解决了此问题。”。

当然,benjy的评论(谢谢!)也将有助于获取有关您遇到的实际错误的更多详细信息,即:

您可以在这里cgit.drupalcode.org/migrate_upgrade/tree/src/…打印$ e-> getException(),然后您会看到PDO错误

您可以(临时)在通过链接显示的代码中的第122和123行之间添加此类打印。


正如我在问题中提到的那样,我不具备PHP知识,无法理解庞大的PHP代码中的问题是什么?您能否编辑问题并用简单的词来解释实际上是什么“抛出异常”?处理的分步方式?请尽可能简单,我刚刚开始品尝PHP。

@benos这仅表示很可能在迁移设置中配置了一些琐碎的内容。错字,错误的密码,错误的URL。这样的事情。
leymannx

@benos,您可以在cgit.drupalcode.org/migrate_upgrade/tree/src/…中打印$ e-> getException(),然后会看到PDO错误。
Benjy

@leymannx如果我在本地创建了2个DB(一个用于D7,一个用于D8),则只有一个D7应该具有完全相同的详细信息,这是我要升级的在线站点,对吗?

@leymannx我已经重新创建了一切。在线D7站点上的本地D7数据完全相同:该站点的文件夹相同;数据库名称和用户名相同,密码相同;我还添加了前缀,尽管一切似乎都准备就绪,但仍然出现相同的错误。

0

强制代码库跳过读取{system}的那一刻,它死于找不到下一个数据库表{field_config_instance}。换句话说:它没有读取您的D7数据库。也许它试图阅读D8,也许完全不然,我们怎么知道?您很可能输入了错误的数据库配置(例如,两个站点位于不同的服务器上,而mysql服务器在两个服务器上均为localhost,但localhost不是同一服务器)。我刚刚检查了Migrate Upgrade的contrib模块和核心的migration模块的代码,如果存在与前缀相关的错误,这非常令人惊讶,因为两者都处理整个数据库设置数组,而不是逐段处理。

如果无法访问有关如何解决此问题的基础知识,就很难说。抱歉。如果可以的话,我将投票关闭它,但是由于有赏金,所以我不能。我们无法帮助您,这个问题也不会帮助其他人。唯一可能的帮助是:阅读并理解您的Drupal 7设置文件,并为Migrate Upgrade模块提供正确的凭据(大量注释已经表明这毫无用处。)

一种可能的长期解决方案是在contrib模块中包含一项功能,使人们可以上载settings.php,然后我们可以尝试使用该功能。这是非常脆弱的,但值得一试。当某人有时间对其进行编码时...

我不知道为什么人们如此强烈地反对。还有其他人有同样的问题吗?


0

自从我发布此消息以来已经过去了很多时间,但是我想我现在知道问题出在哪里:

我留下了2-3个安装的模块,然后我认为它们“非常基础”,因此我确定它们和所有核心模块一样都具有移植路径。

如果我没记错的话,这些是:Metatag和Redirect(在Drupal 8中从D7 Globalredirect和Redirect转移到Just Redirect)。

我不仅将它们留在D7站点中,还将它们安装在D8中,因此,根据需要,我的站点的所有版本都不是仅核心版本。

这是我的第一次迁移,作为项目的新生,我犯了这个错误。我真的坚信“不可能”,这些模块不会有迁移路径(而且当您想到它时,它们确实应该有),但是后来我发现确实只有通常的核心模块才具有迁移路径否则应具有自定义或贡献的迁移路径。

正是您知道---这些模块和其他模块确实具有contrib迁移路径,您可以通过使用此迁移路径对它们进行修补(将其“注入”到该路径中)来使用它们。

无论如何,那时候我不是这种情况,而且我确定它是随系统一起提供的。

我错得很痛苦,在我看来,这就是上述迁移失败的唯一原因;我什至通过大约2个月前最后一次成功迁移之前所做的一个小实验来强化了这一假设。


0

一旦我收到该错误消息。原来是我“ drupal_”设置的$ db_prefix。您应该将其放在高级选项中。

问候,卡洛斯·阿里曼

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.