gpt4 book ai didi

php - PDO 连接被 laravel 拒绝,但不被 $con = new PDO() 拒绝

转载 作者:行者123 更新时间:2023-11-29 23:16:25 27 4
gpt4 key购买 nike

我已经为我的 laravel 5.0-dev 项目配置了 mysql,如下所示:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST') ?: 'localhost',
'database' => env('DB_DATABASE') ?: 'homestead',
'username' => env('DB_USERNAME') ?: 'homestead',
'password' => env('DB_PASSWORD') ?: 'secret',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],

但是,每当我尝试使用 php artisan 或 laravel 应用程序本身与数据库交互时,我都会收到连接被拒绝('PDOException' 和消息 'SQLSTATE[HY000] [2002]')。

奇怪的是,当我运行下面的代码时,连接不会被拒绝。

<?php
$dsn = 'mysql:dbname=homestead;host=localhost';
$user = 'homestead';
$password = 'secret';

try
{
$dbh = new PDO($dsn, $user, $password);
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}

我已经在谷歌上搜索了 3 个小时,但还没有找到一个真正有效的解决方案。因此,我们非常感谢任何帮助。

最佳答案

问题已解决。首先,如果您像我一样使用虚拟机,则无法将主机设置为 localhost,必须将其设置为 127.0.0.1。其次,需要明确定义连接的端口(mysql的默认端口是33060)。因此,在我的例子中,连接配置定义如下:

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

最后,您需要修改项目中的.env文件:

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

关于php - PDO 连接被 laravel 拒绝,但不被 $con = new PDO() 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com