首页 > 解决方案 > 尝试将 drush migrate-upgrade 与 DDEV 一起使用时连接被拒绝(Drupal 7 到 8 升级)

问题描述

我正在尝试使用 DDEV 在本地测试我的跑步俱乐部的 Drubal 7 网站的升级。

我有一个带有网站副本的容器,下面的结果来自 DDEV describe 命令:

    URLs
    ----
    https://drupalTest.ddev.site:8003
    https://127.0.0.1:32773
    http://drupalTest.ddev.site:8002
    http://127.0.0.1:32774

    MySQL/MariaDB Credentials
    -------------------------
    Username: "db", Password: "db", Default database: "db"

    or use root credentials when needed: Username: "root", Password: "root"

    Database hostname and port INSIDE container: db:3306
    To connect to db server inside container or in project settings files:
    mysql --host=db --user=db --password=db --database=db
    Database hostname and port from HOST: 127.0.0.1:32771
    To connect to mysql from your host machine,
    mysql --host=127.0.0.1 --port=32771 --user=db --password=db --database=db

    Other Services
    --------------
    MailHog (https):        https://drupalTest.ddev.site:8026
    MailHog:                http://drupalTest.ddev.site:8025
    phpMyAdmin (https):     https://drupalTest.ddev.site:8037
    phpMyAdmin:             http://drupalTest.ddev.site:8036

我还有一个装有 Drupal 8(全新安装)的容器。

    URLs
    ----
    https://drupal8migration.ddev.site:8017
    https://127.0.0.1:32769
    http://drupal8migration.ddev.site:8016
    http://127.0.0.1:32770

    MySQL/MariaDB Credentials
    -------------------------
    Username: "db", Password: "db", Default database: "db"

    or use root credentials when needed: Username: "root", Password: "root"

    Database hostname and port INSIDE container: db:3306
    To connect to db server inside container or in project settings files:
    mysql --host=db --user=db --password=db --database=db
    Database hostname and port from HOST: 127.0.0.1:32797
    To connect to mysql from your host machine,
    mysql --host=127.0.0.1 --port=32797 --user=db --password=db --database=db

    Other Services
    --------------
    MailHog (https):        https://drupal8migration.ddev.site:8026
    MailHog:                http://drupal8migration.ddev.site:8025
    phpMyAdmin (https):     https://drupal8migration.ddev.site:8037
    phpMyAdmin:             http://drupal8migration.ddev.site:8036

我在使 drush migrate-upgrade 命令工作时遇到问题,这是

ddev exec drush migrate-upgrade --legacy-db-url=mysql://db:db@127.0.0.1:32771/db --legacy-root=https://drupalTest.ddev.site:8003 --configure-only

刚刚收到此错误:

SQLSTATE[HY000] [2002] Connection refused                            [error]

任何帮助表示赞赏

标签: migrationdrupal-8drushddev

解决方案


欢迎来到 ddev,马克!

您的问题是您在那里使用了错误的 --legacy-db-url 。数据库的凭据将是:

主机:旧版安装的容器名称(如 ddev--db)(不是 127.0.0.1) 端口:不需要指定,因为它是默认的 3306(在 docker 容器空间内)

所以看起来你想要这样的东西: ddev exec drush migrate-upgrade --legacy-db-url=mysql://db:db@ddev-drupaltest-db/db --legacy-root=https://drupalTest.ddev.site:8003 --configure-only

请参阅“不同项目可以相互通信”下的常见问题解答

此外,您绝对想阅读Migrating from Drupal 6 to Drupal 8 Like a Boss,这有助于在迁移的上下文中理解所有这些内容。

我注意到您似乎为不同的项目使用不同的 http 端口 - 您根本不需要这样做。使用 ddev 的正常方法是将所有内容都放在端口 80 和 443 上(如果有冲突,也可以设置其他端口)。您无需设置 router_http_port 或 router_https_port 即可在同一主机上运行多个项目。


推荐阅读