PHP Laravel:无法建立连接,因为目标计算机主动拒绝它

jst*_*ein 14 php mysql pdo laravel

我正在Laravel 5中构建一个Web应用程序.该应用程序应该将"类别名称"存储在MySQL数据库中并显示一个表单以添加新的"类别名称".当我执行命令php artisan serve并导航到http:// localhost:8000/admin/categories /时,收到以下错误消息:

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
Run Code Online (Sandbox Code Playgroud)

根据我读到的关于堆栈溢出的几篇帖子,许多用户遇到此错误都没有正确配置.env文件,该文件覆盖了PHP数据对象(PDO)的默认设置,如database.php文件中所指定..env文件定义如下:

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)

并且database.php文件中的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,
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我进入我的虚拟机并运行时mysql -uhomestead -psecret homestead,我能够连接到数据库.问题是,当我可以使用相同的参数直接连接到它时,为什么Laravel无法连接到MySQL?还有什么可以拒绝进入Laravel?

jou*_*oun 8

有时可能是缓存问题:

    php artisan config:clear
Run Code Online (Sandbox Code Playgroud)


小智 7

我收到此错误是因为我忘记在 XAMPP 控制器中启动 MySQL。

  • 这对我的情况来说是正确的 (3认同)

jst*_*ein 6

我将homestead.yaml中指定的ip地址从localhost更改为192.168.10.10.然后我跑了homestead provision,似乎解决了这个问题.主机无法解析localhost或127.0.0.1,因为它已映射到自身.