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

3

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

如果我使用数据库主机名 'localhost',则会出现2个错误:

[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个回答

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'        => '',
    )

这对我有用,但如果有人能解释为什么需要这样做,那就太好了。 - Kevin Jung
我也试过了,谢谢。但是我不知道为什么我们要添加这个。我检查了php.ini文件,发现默认的unix_socket与我们设置的相同。 - Octavian Ruda
@KevinJung 只需确保在部署到服务器时将其删除。 - Haring10
哇,这让我感到困惑。谢谢。 - Clinton Green
我已经寻找这个问题的解决方案一个小时了。当我看到这个时,我想,肯定不行...然后它奏效了。谢谢! - wuno

1
首先通过输入以下命令清除您的配置文件:

php artisan config:clear

然后修改您的.env文件。
APP_URL = 127.0.0.1
DB_HOST = 127.0.0.1

希望这对你有用。

0

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

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

然后打开您的应用程序/config文件夹中的database.php文件,并在'host' => env('DB_HOST', 'localhost')下面添加以下行

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

这解决了我的问题,也有可能帮助其他人。请注意,在配置路径之前,非常重要先验证包含mysql.sock文件的目录。


0

如果你使用lampp,可以尝试以下方法:

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

找到并查看"socket =/opt/lampp/var/mysql/mysql.sock",

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

'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安装位置。我建议你找一下,如果找不到就祝你好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接