【问题标题】:Laravel 5.1 - Homestead MySQL connection. `Connection Refused` & `No such file or directory`Laravel 5.1 - Homestead MySQL 连接。 `连接被拒绝`和`没有这样的文件或目录`
【发布时间】:2015-11-02 18:29:21
【问题描述】:

当我的 .env 文件是这样的时候:

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

终端 php artisan migrate 工作成功,但在 localhost 测试中,它抛出

Connector.php 第 50 行中的 PDOException:

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

但是当我的 .env 文件是这样的时候:

 DB_HOST=localhost
 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret

在 localhost 上,一切(注册)都运行良好,但是终端上的 php artisan migrate 抛出:

[PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

我的 database.php 文件:

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

【问题讨论】:

    标签: mysql laravel laravel-5 homestead


    【解决方案1】:

    在 VM 内部,sql 端口是 3306。在 homestead VM 之外,主机只转发到 homestead VM 上的 SQL 端口。这就是为什么 33060 指向 3306。

    Laravel Homestead Vagrant Box Database Problems

    【讨论】:

    • 主机也应该是 127.0.0.1 而不是 localhost 。
    【解决方案2】:

    解决问题。执行以下操作:

    .env

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

    数据库.php

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

    这将解决您的浏览问题。现在要运行 artisan 命令,只需执行 vagrant SSH 并在 VM 上运行它们。

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 2014-06-05
      • 2016-01-27
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2010-12-13
      相关资源
      最近更新 更多