【问题标题】:Connection refused when trying to use drush migrate-upgrade with DDEV (Drupal 7 to 8 upgrade)尝试将 drush migrate-upgrade 与 DDEV 一起使用时连接被拒绝(Drupal 7 到 8 升级)
【发布时间】:2020-10-28 02:00:00
【问题描述】:

我正在尝试使用 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]

感谢任何帮助

【问题讨论】:

    标签: migration drupal-8 drush ddev


    【解决方案1】:

    欢迎来到 ddev,马克!

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

    host:旧版安装的容器名称(如 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

    参见“不同项目可以相互通信”下的faq

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

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

    【讨论】:

    • 非常有用,我确信下一个问题是新问题,但是当我运行命令时,我收到大约 20 条警告消息,它们都带有相同的消息:htmlspecialchars() 期望参数 1 是字符串、数组鉴于 [警告] Html.php:424 我有一个快速的谷歌,它不是很明显,但可能与特殊字符有关。我会继续搜索!
    • 老 Drupal 经常有这样的消息,我见过很多。您可能不想解决它。但请确保您使用的是 current drush - 您是否在目标项目中安装了 current drush? ddev composer require drush/drush。否则,使用您提供的命令,您将只使用捆绑在 Web 容器中的 drush8。如果您进行站点安装,则 drush 启动器会找到站点安装的 drush。
    • 感谢@rfay,现在看起来很明显,我使用的是旧版本的 drush。
    • 使用 --destination=somedir 他们去 web/somedir。如果没有 --destination,它们会转到 settings.ddev.php 中定义的站点/默认/文件/同步。
    • 我今天看了看,所有的 .yml 文件都在 /tmp 文件夹中,(我确实运行了几次)也许我只是有一点时间,无论如何谢谢 :)
    猜你喜欢
    • 2017-09-28
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多