当前位置: 首页 > 知识库问答 >
问题:

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

周作人
2023-03-14

我相信我已经成功地将我的(非常基本的)站点部署到fortrabbit,但是一旦我连接到SSH运行一些命令(如php artisan迁移php artisan db:种子),我就会出错留言:

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

在某种程度上,迁移肯定是有效的,因为我的表就在那里——但这并不能解释为什么它现在对我不起作用。

共有3个答案

丰俊艾
2023-03-14

我遇到了同样的问题,我正在运行MacOSX10.10Yosemite。我已经启用了操作系统附带的Apache服务器和PHP。然后我刚刚配置了mCrypt库以开始。之后,当我使用模型和DB时,我得到了错误:

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

我发现的原因仅仅是因为PHP和MySQL不能自己连接。为了解决这个问题,我遵循以下步骤:

>

  • 打开一个终端并连接到mysql:

    mysql -u root -p
    

    它将要求您输入相关密码。获得mysql promt后,键入下一个命令:

    mysql> show variables like '%sock%'
    

    你会得到这样的结果:

    +-----------------------------------------+-----------------+
    | Variable_name                           | Value           |
    +-----------------------------------------+-----------------+
    | performance_schema_max_socket_classes   | 10              |
    | performance_schema_max_socket_instances | 322             |
    | socket                                  | /tmp/mysql.sock |
    +-----------------------------------------+-----------------+
    

    保留最后一行的值:

    /tmp/mysql.sock
    

    在您的laravel项目文件夹中,查找配置DB连接参数的database.php文件。在mysql部分末尾添加下一行:

    'unix_socket' => '/tmp/mysql.sock'
    

    你必须有这样的东西:

    'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'SchoolBoard',
            'username'  => 'root',
            'password'  => 'venturaa',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'unix_socket' => '/tmp/mysql.sock',
        ),
    

    现在只需保存更改,并重新加载页面,它必须工作!

  • 庄康胜
    2023-03-14

    错误消息表示尝试通过套接字进行MySQL连接(不受支持)。

    在Laravel(工匠)的上下文中,您可能希望使用不同的/正确的环境。例如:php工匠迁移--env=生产(或任何环境)。看这里。

    巫马炫明
    2023-03-14

    Laravel 4:将app/config/database.php文件中的“主机”从“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/1231563

    更新:一些人问为什么这个修复程序有效,所以我对这个主题做了一些研究。就像这篇文章中解释的那样,他们似乎使用了不同的连接类型https://stackoverflow.com/a/9715164/1231563

    这里出现的问题是“localhost”使用UNIX套接字,在标准目录中找不到数据库。然而,127.0.0.1使用TCP(传输控制协议),这实质上意味着它通过计算机上的本地互联网运行,在这种情况下比UNIX套接字可靠得多。

     类似资料:
    • 问题内容: 我相信我已经将我的(非常基本的)站点成功部署到了fortrabbit,但是一旦我连接到SSH以运行一些命令(例如或),我就会收到一条错误消息: 在某个时候,迁移肯定已经成功了,因为我的表在那里-但这不能解释为什么它现在对我不起作用。 问题答案: 错误消息表明尝试了通过套接字的MySQL连接(不支持)。 在Laravel(工匠)的背景下,您可能想要使用其他/正确的环境。例如:(或任何环境

    • 问题内容: 我正在尝试在Mac上安装香草论坛,为此,我刚刚从MySQL命令行创建了一个数据库和一个用户: 因此,我尝试使用以下代码进行连接: 但不幸的是,我收到一条错误消息 警告:mysqli_connect():(HY000 / 2002):在第3行的/Users/kramer65/Sites/vanilla/info.php中没有这样的文件或目录无法连接到MySQL:没有这样的文件或目录 知道

    • 我试图在我的Mac上安装vanilla forums,为此我刚从MySQL命令行创建了一个数据库和一个用户: 所以我尝试使用以下代码进行连接: 但不幸的是,我有一个错误说 警告:mysqli_connect():(HY000/2002):第3行/users/kramer65/sites/vanilla/info.php中没有这样的文件或目录无法连接到mysql:没有这样的文件或目录 知道我哪里错了

    • 我已经有一个在我的本地主机与数据库工作的laravel项目。但当我使用GCP应用程序引擎时,我遵循数据库连接的步骤。我已经在云中创建了mysql数据库,并从工作的本地数据库导入了所有sql。当我部署应用程序时,显示SQLSTATE[HY000][2002]下面没有这样的文件或目录是我的应用程序。yaml文件内容

    • 当我尝试使用“php artisan migrate”命令迁移Laravel 5中的表时,出现以下错误: “SQLSTATE[HY000][2002]中没有此类文件或目录…”/供应商/laravel/framework/src/light/Database/Connectors/Connector。菲律宾:47 我的. env文件包含以下默认设置: 我的数据库。php文件将mysql列为默认数据库

    • 问题内容: 我正在使用Docker创建一个容器来测试我的Mac上基于PHP和MySQL构建的Web应用程序。我的PHP应用是使用无脂肪框架进行MVC和路由构建的。我有两个Dockerfile,一个用于MySQL,一个用于PHP。我已经成功使用了测试Docker应用程序,因此我相信我的映像已正确安装。 错误的主要部分: 请注意,如果我使用而不是进行连接,则会收到一个稍微不同的错误,该错误表示: 我的