SQLSTATE [HY000] [2002]没有此类文件或目录错误


14

处理您的请求时出错

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

收到上述错误,请有人为我提供解决方案。


我已经通过更改连接字符串进行了修复,请确保您的mysql已打开并且数据库中存在所有表。
Touqeer Shafi 2015年

Answers:


12

使用PHP 7.0.13安装Magento 2.1.0时遇到了相同的问题。
我可以通过将数据库主机名设置为127.0.0.1而不是localhost来解决此问题。


应该在哪里做?
joeybab3

内部./app/etc/env.php
吉诺

10

如果您的服务器在app/etc/local.xml中,localhost并且该错误出现在Magento的错误日志中,但是Magento仍在正常运行,则mysql重新启动,并且套接字/tmp/mysql.sock或套接字文件中的任何内容my.cnf暂时消失了。

由于缺少,PDO mysql连接器报告 SQLSTATE[HY000] [2002] No such file or directory

如果您不断抛出此错误,并且除了“异常错误”页面之外,无权访问Magento,则mysql已完全崩溃,您需要托管服务提供商来找出原因并重新启动mysql。


6

将数据库主机名设置为127.0.0.1,而不是localhost。


2

如果您的文件系统已满,这也可能发生... df -h 1st ...当然,大多数情况下,您应该在此之前收到警报...

mysqld将无法正常运行,并且将处于“安全”模式

HTH SNS



0

确保正确编辑app / etc / local.xml。如果您的表没有前缀,请确保正确的行是:

<table_prefix><![CDATA[]]></table_prefix>

<table_prefix>{{db_prefix}}</table_prefix>

0

这通常是由于与Web服务器相比,PHP命令行使用的PHP实例不同。特别mysql.sock是在这种情况下,可能配置错误。

要确定您是否正在使用一个PHP实例:

  1. 登录到您的Magento服务器。
  2. 输入以下命令:

    php -i | grep 'php.ini'

这确定了PHP命令行界面(CLI)使用的设置。请注意php.ini位置。

  1. 如果您尚未这样做,请phpinfo.php在您的网络服务器上设置一个。
  2. 比较值加载的配置文件phpinfo.php从一个php -i

phpinfo.php显示php.ini您的Web服务器使用的文件。如果与PHP中的不同php.ini,则必须使PHP CLI和Web服务器的所有PHP设置保持一致。

有关其他详细信息,请参阅Web服务器随附的文档。


这有可能发生-我想我现在正面临这个问题。但为什么?关于检查这些ini文件的任何具体想法?
VladFr

4
相反,您可以提供一些礼貌此页面devdocs.magento.com/guides/v2.0/install-gde/trouble/php/...

0

我可以通过外壳程序使用几个版本的PHP-键入php并按tab显示我的自动完成功能知道哪些版本。

对我来说,PHP 5.4、5.5和5.6都可以正常工作,但是PHP 7找不到mysql.sock,并且由于该问题中讨论的“ SQLSTATE [HY000] [2002]没有这样的文件或目录错误”而崩溃。。

# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-5.6.20

# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-7.0.8

要查看您的mysql服务器所在的套接字,请使用以下命令:

cat /etc/mysql/my.cnf | grep socket

就我而言,在我的无业游民的系统中安装了Percona Mysql之后,袜子套接字文件恰好位于这里:

/var/run/mysqld/mysqld.sock

(注意,它被称为mysqld,而不仅仅是mysql

我有多个版本的php供您选择,这些命令向我展示了哪些有问题,哪些有问题:

对我来说,答案只是在流浪者置备程序脚本中包含代码以在/tmp/mysql.sock和/var/run/mysqld/mysqld.sock之间创建符号链接。

if [ ! -L /tmp/mysql.sock ]; then
    echo "Creating symbolic link for php 7 to connect to mysql.sock"
    ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi

有了新的symlink,以前给出的测试脚本现在可以完美地用于所有版本的PHP,并且我可以在代码中使用localhost,而不必提供127.0.0.1 IP地址。


0

我收到相同的错误“ SQLSTATE [HY000] [2002]没有这样的文件或目录”。并发现MySQL服务已停止。我启动了MySQL服务,它的运行正常。


0

这似乎是错误的PHP版本问题,您需要选择必须使用哪个php才能运行命令,如下所示:

/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade

PS:以上示例是针对MAC的,您也可以针对Windows或Unix进行类似的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.