PDOException SQLSTATE[HY000] [2002] 没有这样的文件或目录

14 浏览
0 Comments

PDOException SQLSTATE[HY000] [2002] 没有这样的文件或目录

我相信我已经成功地将我的(非常基本的)网站部署到fortrabbit,但是一旦我连接到SSH来运行一些命令(例如php artisan migratephp artisan db:seed),我会收到一个错误消息:

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

在某个时候迁移一定是成功的,因为我的表已经存在 - 但这不解释为什么它现在对我不起作用。

admin 更改状态以发布 2023年5月24日
0
0 Comments

错误信息指示尝试通过套接字进行MySQL连接(该方法不受支持)。

在Laravel(artisan)的上下文中,您可能需要使用不同的/正确的环境。例如:php artisan migrate --env=production(或任何其他环境)。请参见此处

0
0 Comments

导致此错误的最简单的原因之一就是MySQL服务器未运行。首先进行验证。如果MySQL服务器已经启动,那么可以尝试以下建议:

Laravel 4:app/config/database.php文件中的"host"从"localhost"改为"127.0.0.1"

Laravel 5+:.env文件中的"DB_HOST"从"localhost"改为"127.0.0.1"

我也曾经面临同样的问题,但是上述解决方案都不能解决。我最终是通过将/app/config/database.php文件中的"host"从"localhost"改为"127.0.0.1"来解决了问题。

我并不确定为什么默认情况下"localhost"不能正常工作,但是我在一个类似问题的Symfony2帖子中找到了这个答案。链接: https://stackoverflow.com/a/9251924

更新: 一些人询问为什么这样的修复方案能够解决问题,因此我做了一些研究。据我了解,它们使用了不同的连接类型,如这篇文章所解释的:https://stackoverflow.com/a/9715164

这里出现的问题是,"localhost"使用UNIX套接字(socket),不能在标准目录中找到数据库。然而,"127.0.0.1"使用TCP(传输控制协议),在这种情况下,它在计算机的“本地网络”上运行,比UNIX套接字更可靠。

0