首页 文章

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

提问于
浏览
16

使用Mac OS X和Homestead 2.2.1与Laravel 5.2 .

在终端(在我的项目文件夹中的宅基地内)我可以做php工匠来查看所有可用的命令 . 当我尝试运行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连接它 . 但我老老实实地没有想到什么是错误的设置 .

谢谢您的帮助 !!

EDIT
出于某种原因,当我将项目移动到MAMP并运行php artisan migrate时,我得到了相同的 SQLSTATE[HY000] [2002] Connection refused 错误 .
现在我完全迷失了......

15 回答

  • 4

    Problem

    在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,
        ],
    

    Notice there is no port set!

    虽然在我的 .env 文件中我设置了 DB_PORT=33060 . 但 value (3306) 从未被读入 config/database.php .
    所以不要像我一样愚蠢,忘记检查 database.php 文件 .


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

  • 0

    我刚碰到这个,发现将.env文件中的这个从127.0.0.1更改为localhost修复了它 .

    DB_HOST =本地主机

  • 0

    如果您在Mac OS上使用MAMP,请将以下行添加到您的mysql数据库配置文件中

    'unix_socket' => env('DB_SOCKET', ''),
    

    并在你的.env文件中添加

    DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
    
  • 30

    我遇到了这个问题 . 当与Sequel Pro连接时,我需要使用33060作为端口,但是在.env文件中它必须是3306.我在.env文件中有33060 . 将其更改为3306并且有效 .

  • 3

    对于有问题的其他人来说,另一种解决方案我有所有设置正确但由于某种原因我的更改没有更新 . Laravel实际上缓存了配置文件(我发现它完全是愚蠢的) .

    更新配置后,这是我的解决方案:

    php artisan config:clear

  • 1

    我有同样的问题,尝试这个工作

    DB_HOST=localhost
    
  • 3

    这是一个简单的修复 . 您的mysql数据库已丢失与服务器的连接 . 如果您正在运行本地服务器,请在终端中运行:

    mysqld
    

    这将重新连接您的数据库 . 然后(如果你使用自制软件)运行:

    brew services start mysql
    

    这将在登录时自动连接您的数据库 .

  • 0

    使用localhost而不是127.0.0.1(在.env文件中),然后运行命令“php artisan config:cache”

  • 4

    在我的情况下,这个错误出现了蓝色 . 在盯着我已经意识到的那个神秘错误时,我试图在vm之外运行命令......

  • 28

    您的“mysql”可能尚未启动或未启动到“3306”端口

  • 0

    如果您使用 Homestead ,那么您应该使用默认的mysql端口运行它 . 因此,您应该在.env文件中使用 DB_PORT=3306 ,而不是使用 DB_PORT=33060 . 另外,记得在宅基地安装中运行 php artisan migrate 命令,一切都应该没问题 .

    希望有所帮助 .

  • 2

    解决它的唯一问题是将连接细节放在 config/database.php 而不是 .env 文件中 . 希望这可以帮助

  • 6

    将所有配置放在.env文件后,如果您已经运行了php artisan服务,请重新启动它 .

  • 9

    我,我使用流浪汉,但我在框外执行php工匠所以基本上它没有权限

  • 0

    我有一个类似的问题,这里没有任何建议帮助我 . 这解决了我的问题是使用相同的值设置应用程序名称和数据库主机名 . 在我的情况下,127.0.0.1正常工作 .

    APP_URL=127.0.0.1
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=zzz
    DB_USERNAME=yyy
    DB_PASSWORD=XXX
    

相关问题