我已经搜索了几个小时,但仍然找不到这个。
我收到 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
中创建新用户 - 关闭防火墙
有什么想法可以解决这个问题吗?
我想通了,在'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 artisan config:clear
然后修改您的.env
文件
APP_URL = 127.0.0.1
DB_HOST = 127.0.0.1
希望这对你有用。
如果你使用lampp。你可以试试这个:
打开文件 mysql 配置。(您可以在/opt/lampp/manager-linux-x64.run 中打开 lampp 控制面板,然后打开 Mysql 数据库的配置或打开/opt/lampp/etc/my.cnf)。
查找并查看"socket =/opt/lampp/var/mysql/mysql.sock",
在 laravel 中添加 'unix_socket' => '/opt/lampp/var/mysql/mysql.sock' 到文件数据库.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 的安装位置。我让你看看你找不到。祝你好运
我必须在 ubuntu 15.10 中执行以下操作
copy the file or file contents from /opt/lampp/etc/my.cnf to /etc/mysql/my.cnf
然后在您的应用程序/配置文件夹中打开数据库.php文件,并在"host"=> env('DB_HOST, 'localhost')下面添加以下行
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
这解决了我的问题,可以拯救别人的问题。请注意,在配置路径之前,首先验证包含mysql.sock文件的目录非常重要。