SQLSTATE \[HY000\] \[2002\] Laravel 宅基地内的连接被拒绝

新手上路,请多包涵

使用 Mac OS X 和 Homestead 2.2.1 和 Laravel 5.2。

在终端(在我的项目文件夹中的宅基地内)我可以执行 php artisan 来查看所有可用的命令。当我尝试运行 php artisan migrate 时,出现连接错误:

SQLSTATE[HY000] [2002] Connection refused


我已经使用这些 .env 设置设置了一个 Laravel 项目

DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret

我还为 DB_HOST 尝试了 localhost ,为 DB_USERNAME 和 DB_PASSWORD 尝试了 root 。并将这些的所有可能变化放在一起!


在 Sequel Pro(数据库管理应用程序)中,我可以使用这些设置进行连接

Host       127.0.0.1
Username   homestead
Password   secret
Database   tcv
Port       33060

但是这个数据库显然是空的,因为我不能从终端迁移到它…

据我所知,这是一个配置问题,因为我可以使用 Sequel Pro 连接到它。但老实说,我不知道什么是设置错误。

谢谢您的帮助 !!

编辑

出于某种原因,将我的项目移动到 MAMP 并运行 php artisan migrate 时,我得到了相同的 SQLSTATE[HY000] [2002] Connection refused 错误。

现在我完全迷失了……

原文由 nclsvh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
2 个回答

问题

在 Laravel 中,您有 config/database.php 连接的所有设置都位于其中。您在项目的根目录中还有一个 .env 文件(每个人都使用它来节省时间)。这包含可用于整个项目的变量。

在标准 L5 项目中, config/database.php 的 MySql 部分如下所示:

     'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
        'engine'    => null,
    ],

注意没有设置端口!

虽然在我的 .env 文件中我设置了 DB_PORT=33060 。但是 value (3306) 从未读入 config/database.php

所以不要像我一样笨,忘记检查 database.php 文件。


使固定

只需将 'port' => env('DB_PORT', 3306), 添加到您的 config/database.php 并在 .env 中设置该值,如下所示 DB_PORT=3306

原文由 nclsvh 发布,翻译遵循 CC BY-SA 4.0 许可协议

万一这对将来的某人有帮助……我必须使用 WSL 运行工匠命令等,但 MySQL 存在于我的 Windows 环境中。我为正确的术语而挣扎,但我的大脑说 “我不在乎你是否认为你是一个虚拟机,你在我面前是非常真实的,所以当我说连接到自己时,我希望你这样做所以。”

如果我理解正确,PHP 正在神奇的 WSL-land 中执行命令,因此它需要与 WSL-land 相关的数据库 IP。

从命令提示符(Windows,不在 WSL 中)我运行 ipconfig 来找到我的 IPv4 并将其放入我的 Laravel DB_HOST。现在,当我在 WSL 中迁移时,它可以工作。

我意识到这太罗嗦了,但我个人对所有虚拟机的东西都感到很困惑,所以我给出了我希望几周前找到的答案。

希望我永远不会回到 Windows。

原文由 senecaTheMeek 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题