【问题标题】:Laravel Can't Connect to database - Migrations - Error 2002Laravel 无法连接到数据库 - 迁移 - 错误 2002
【发布时间】:2015-02-25 22:31:06
【问题描述】:

我已经搜索了几个小时,但仍然找不到。

我得到 2 个错误,如果我使用数据库主机作为 'localhost',我得到这个错误:

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory  

如果我将数据库主机更改为 '127.0.0.1' 我会收到此错误:

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

我尝试过的事情:

  • 更改 apache/mysql 服务器的运行位置(用户或 `josh (Apache)/josh (MySQL))
  • 更改 MySQL 在 MAMP 中运行的端口,并将该端口放入 database.php 文件中的 mysql 数组中
  • 将连接的主机从 localhost 更改为 127.0.0.1 并返回。
  • phpmyadmin中创建一个新用户
  • 关闭防火墙

任何想法如何解决这个问题?

【问题讨论】:

    标签: mysql laravel migration mamp laravel-artisan


    【解决方案1】:

    我想通了,在'host' => '127.0.0.1'后面加上这个:

    'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock'
    

    所以连接应该是这样的:

    'mysql' => array(
            'driver'        => 'mysql',
            'host'          => '127.0.0.1',
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'database'      => 'dbname',
            'username'      => 'josh',
            'password'      => 'pass',
            'charset'       => 'utf8',
            'collation'     => 'utf8_unicode_ci',
            'prefix'        => '',
        )
    

    【讨论】:

    • 这对我有用,但如果有人能解释为什么需要这样做会很好?
    • 也适合我!谢谢。但我不知道为什么我们必须添加这个。我检查了 php.ini 和默认的 unix_socket 和我们设置的一样。
    • @KevinJung 只要确保在服务器上部署时将其取出
    • 哇,这让我很困惑。谢谢
    • 我一直在寻找一个小时的解决方案。当我看到这个时,我想,肯定不是......然后它起作用了。谢谢!
    【解决方案2】:

    首先通过键入清除配置文件

    php artisan config:clear
    

    然后修改你的.env文件

    APP_URL = 127.0.0.1
    DB_HOST = 127.0.0.1
    

    希望这对你有用。

    【讨论】:

      【解决方案3】:

      如果你使用 lampp 。你可以试试这个:

      打开文件mysql配置。 (可以在/opt/lampp/manager-linux-x64.run中打开lampp控制面板,然后打开Mysql数据库的Configure或者打开/opt/lampp/etc/my.cnf)。

      查找并查看“socket =/opt/lampp/var/mysql/mysql.sock”,

      添加 'unix_socket' => '/opt/lampp/var/mysql/mysql.sock' 到 laravel 中的 database.php 文件中:

      'mysql' => [
              'driver'    => 'mysql',
              'unix_socket'      => '/opt/lampp/var/mysql/mysql.sock',
              'host'      => env('DB_HOST', 'localhost'),
              'database'  => env('DB_DATABASE', 'luanvan'),
              'username'  => env('DB_USERNAME', 'huuthang'),
              'password'  => env('DB_PASSWORD', '123456'),
              'charset'   => 'utf8',
              'collation' => 'utf8_unicode_ci',
              'prefix'    => '',
              'strict'    => false,
          ],
      

      文件 mysql.sock 取决于您安装 Lampp 的位置。我让你看看你是否找不到。祝你好运

      【讨论】:

        【解决方案4】:

        我必须在 ubuntu 15.10 中执行以下操作

        copy the file or file contents from /opt/lampp/etc/my.cnf to /etc/mysql/my.cnf
        

        然后打开 app/config 文件夹中的 database.php 文件,并在 'host' => env('DB_HOST', 'localhost') 下方添加以下行

        'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
        

        这解决了我的问题,可以拯救别人的问题。请注意,在配置路径之前首先验证包含 mysql.sock 文件的目录是非常重要的。

        【讨论】:

          猜你喜欢
          • 2019-04-25
          • 1970-01-01
          • 2013-04-21
          • 1970-01-01
          • 2020-04-10
          • 1970-01-01
          • 2019-07-18
          • 2012-10-29
          • 1970-01-01
          相关资源
          最近更新 更多