使用docker for windows时,Drupal 7升级到Drupal 8升级UI无法连接到本地主机数据库

使用docker for windows时,Drupal 7升级到Drupal 8升级UI无法连接到本地主机数据库,docker,drupal,upgrade,migrate,Docker,Drupal,Upgrade,Migrate,我有Win 10 pro上的Docker与windows linux子系统集成(使用Debian) -Docker配置为在上公开守护程序tcp://localhost:2375 没有TLS,所以本地一切都很好 我有2个docker compose“设置/堆栈”正在运行: 运行Drupal 7的PHP容器,运行mysql容器和phpmyadmin容器 运行Drupal8的PHP容器,运行mysql容器和phpmyadmin容器 Drupal7站点是生产站点的备份,在本地运行良好 Drupal 8站

我有Win 10 pro上的Docker与windows linux子系统集成(使用Debian) -Docker配置为在上公开守护程序tcp://localhost:2375 没有TLS,所以本地一切都很好

我有2个docker compose“设置/堆栈”正在运行:

  • 运行Drupal 7的PHP容器,运行mysql容器和phpmyadmin容器

  • 运行Drupal8的PHP容器,运行mysql容器和phpmyadmin容器

  • Drupal7站点是生产站点的备份,在本地运行良好

    Drupal 8站点已经安装并准备好升级和迁移,并且在本地运行,没有任何问题

    我可以随意启动和停止容器,并通过localhost通过我的compose.yml提供的端口分配到达站点,如下所示:

    • 本地主机上的Drupal 7:9191
    • 本地主机上的Drupal 8:8585
    每个站点正确连接到其数据库,我也可以通过指定端口访问PMA,就像我访问实际站点一样,并且它与数据库正确交互

    但是,无论我如何尝试,我都无法让Drupal 8升级连接到本地主机Drupal 7数据库!它只是无法连接,并根据我的尝试给出一些错误。我甚至试着连接到生产现场数据库,但仍然一无所获

    所以我显然有点不对劲

    提供给每个drupal站点的基本数据库信息类似于以下内容:

    • 数据库:databasename
    • 用户:数据库用户名
    • 密码:数据库密码
    • 主机名:主机名
    • 港口:3306
    • 驱动程序:mysql
    在Drupal 8的/upgrade/credentials页面中,我尝试了“数据库主机”:

    • 本地主机
    • 本地主机:3306
    • localhost:8989(用于通过web访问PMA的PMA端口 浏览器(本地)
    • 主机名(由docker-compose.yml在构建PMA容器时设置, PMA_主机:我必须用于 用于drupal的settings.php中的数据库凭据 我的docker设置正确)
    • 127.0.0.1
    • localhost:hostname
    • 本地docker网络的IPv4(172.XX.XXX.XXX)
    我得到的只是SQLSTATE[HY000][2002]无法分配请求的地址,或者SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败:名称或服务未知

    当使用localhost时,我得到:SQLSTATE[HY000][2002]没有这样的文件或目录

    我还将drupal 7 settings.php数据库凭据复制并粘贴到drupal 8升级页面,以确保不会产生任何打字错误

    在尝试连接到drupal 7数据库时,我也没有在drupal 8最近的日志消息页面(该页面处于活动状态)中获得任何错误日志,只是在升级页面本身

    我已经在这个问题上花了好几个小时试图找到一个解决方案,但毫无效果,我的压力已经超过了挫折感,因为我觉得这应该很简单(至少在这个过程的这个阶段)

    Drupal8安装的是最新版本8.6.15、ApacheDebian2.4.25、PHP7.2.17

    Drupal7安装版本为7.65、ApacheDebian2.4.25、PHP7.1.27

    简单回顾一下,这两个站点在自己的本地设置上运行得很好,我只是无法让Drupal8升级连接到Drupal7数据库

    这必须是一些简单的事情,或者我需要采取另一种方法,我只是不知道已经做了好几个小时了

    我在每个站点的PHP容器中都有drush和composer活动,在drupal 8站点中,我添加了drush迁移/升级工具/模块并将其激活(是的,我已经安装了最新的工具以使用最新版本的drupal)

    我已经阅读了从drupal 7到8的迁移/升级过程中所有的指南和几乎所有的资源,但我找不到任何解决问题的方法

    任何帮助都将不胜感激,因为我唯一的其他想法是核心UI升级模块本身存在问题或与其他模块冲突

    更新:当尝试做同样的事情时,活动域会出现同样的问题吗? -不会出现Docker、Windows或Debian的问题! -就是不行


    我想我需要在drupal.org上打开一个问题

    嗨,你是如何解决这个问题的?我也有同样的经历,不仅在我的Windows10笔记本电脑上,而且在debian服务器上。谢谢你好,Lido,我从来没有真正解决过这个问题-甚至从来没有在drupal.org上得到回复(因为我仍然觉得这应该是可行的,因为每个站点都安装在不同的位置)…但是-我确实找到了一种方法让它工作!在一个域下安装两个站点(如果使用相同的堆栈或docker容器),或者在本地(建议)使用docker或另一个堆栈安装到相同的IP和端口-对于DB相同..如果docker将两个站点都放在一个容器中,或者将两个站点安装到相同的DB(建议在单个MySQL容器中运行的每个站点安装1 DB)这样,站点a D7和a D8/9在同一网络以及DB下运行。希望有帮助~SidGrafix要澄清的是,如果您使用docker 1 MySQL容器和2个DB,以及1个Debian容器和2个安装站点(显然是D7站点下的东西,比如说/var/www/html/web和D8/9 to/var/www/html/web/upgrade)…无论您使用何种路径结构,www数据都需要访问这两个安装(请确保至少为D8/9在settings.php中设置路径,并让D7默认,除非您使用其他自定义路径设置这些路径)Hi sidgrafix,感谢您的更新!事实证明,DB连接存储在D8数据库中,并且连接详细信息不是最新的(我更改了docker堆栈,但仍在使用以前的数据库).奇怪的是,它存储在数据库中,而不是使用settin中的数据库