Laravel无法连接数据库 - 迁移 - 错误2002

时间:2014-12-29 18:17:11

标签: mysql laravel migration mamp artisan

我现在已经搜索了几个小时,仍然无法找到它。

我得到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)
  • 在MAMP中更改MySQL运行的端口,并将该端口放在database.php文件中的mysql数组中
  • 将连接的主机从localhost更改为127.0.0.1并返回。
  • phpmyadmin
  • 中创建新用户
  • 关闭防火墙

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

4 个答案:

答案 0 :(得分:6)

我想出来了,在'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'        => '',
    )

答案 1 :(得分:1)

首先通过键入

清除您的配置文件
php artisan config:clear

然后修改您的.env文件

APP_URL = 127.0.0.1
DB_HOST = 127.0.0.1

希望这对您有用。

答案 2 :(得分:0)

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

  

打开文件mysql配置。 (你可以在/opt/lampp/manager-linux-x64.run中打开lampp控制面板,然后打开配置Mysql数据库或打开/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的安装位置。我告诉你,看看你是否能找到它。祝你好运

答案 3 :(得分:0)

我必须在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文件的目录是非常重要的。