Laravel 无法连接到数据库 - 迁移 - 错误 2002
Posted
技术标签:
【中文标题】Laravel 无法连接到数据库 - 迁移 - 错误 2002【英文标题】:Laravel Can't Connect to database - Migrations - Error 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
中创建一个新用户
关闭防火墙
任何想法如何解决这个问题?
【问题讨论】:
【参考方案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 文件的目录是非常重要的。
【讨论】:
以上是关于Laravel 无法连接到数据库 - 迁移 - 错误 2002的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)