拉拉维尔; “SQLSTATE [HY000] [2002] 连接被拒绝”

Posted

技术标签:

【中文标题】拉拉维尔; “SQLSTATE [HY000] [2002] 连接被拒绝”【英文标题】:Laravel; "SQLSTATE[HY000] [2002] Connection refused" 【发布时间】:2015-04-07 17:53:08 【问题描述】:

我在 OSX 主机上设置了 homestead 2.0 并使用 Sequel Pro。

我可以在Sequel Pro中进行迁移并确认数据已迁移,因此看起来数据库连接没有问题。

但是一旦我尝试从 Laravel 4.2 应用程序获取数据,它就无法检索数据并出现以下错误。

PDOException (2002) 
SQLSTATE[HY000] [2002] Connection refused

这是我的mysql配置。

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => '127.0.0.1',
            'port'      => '33060',
            'database'  => 'homestead',
            'username'  => 'homestead',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''

Sequel pro 设置同上,

Name: 127.0.0.1    
Host: 127.0.0.1
Username: homestead
Password: secret
Database:     
Port: 33060

我尝试将主机名更改为 'localhost',homestead destroy 和 up,但没有工作。 为什么??任何建议都有帮助。

【问题讨论】:

MySQL 的端口通常是3306,而不是33060。不过,您的系统设置可能有所不同。仔细检查一下。 33060 对于 Sequel 是正确的,因为这是宅基地 VM 转发到主机的端口。对于您的应用程序,您需要 3306,因为它在宅基地 VM 内运行。 将续集更改为“33060”和宅基地端口“3306”,但没有工作。 这能回答你的问题吗? SQLSTATE[HY000] [2002] Connection refused within Laravel homestead 【参考方案1】:

我遇到了完全相同的问题,但我不确定为什么会发生这种情况。 不过变了

'host'      => '127.0.0.1',

'host'      => 'localhost',

为我工作。总是比我们预期的简单!

【讨论】:

这是因为 localhost 可以是 127.0.0.1 或 ::1 127.0.0.1 => 连接被拒绝,本地主机 => 没有文件或目录我认为 127.0.0.1 是“更好”的错误【参考方案2】:

对于在其最新版本 (5.3) 上运行 Laravel 的其他开发人员,我只需更改以下几行:

DB_HOST=127.0.0.1
DB_PORT=3306

进入这个:

DB_HOST=localhost
DB_PORT=33060

显然,33060 将转换为 3306,但现在无法解释为什么 localhost 应该工作。

【讨论】:

【参考方案3】:

我解决了将 Laravel 的 .env 文件中主机参数上的地址 127.0.1.1 替换为 localhost 的问题。我正在使用 GNU/Linux Debian 8、Laravel 5.6.3、php 7.1.8、Apache 2.4.27 和 (Mysql) 10.1.26-MariaDB。

【讨论】:

【参考方案4】:
'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'homestead',
            'username'  => 'homestead',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => ''

试试这个,它可能对你有用

【讨论】:

【参考方案5】:

由于某种原因,我遇到了同样的问题,上述方法都不起作用。对我来说,我在 .env 中尝试了这个,我将 DB_HOST 更改为 homestead.local。 Homstead 是我网站的名称。这行得通。

DB_HOST=homestead.local

【讨论】:

【参考方案6】:

我通过更新 mariadb 解决了这个问题。我检查了 'brew outdated' 已过时的内容,然后使用 'brew upgrade mariadb' 更新了 mariadb,重新加载 vagrant 并修复了问题。希望这对你有用。

【讨论】:

以上是关于拉拉维尔; “SQLSTATE [HY000] [2002] 连接被拒绝”的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[HY000] [1049] 未知数据库 'laravel'

SQLSTATE[HY000] [2002] 连接被拒绝 |

Zend 错误 SQLSTATE[HY000] [1045]

SQLSTATE[HY000]:一般错误:1364 字段

Laravel:SQLSTATE [HY000] [2002] 连接被拒绝

SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID 生成失败