Я исправил это, изменив строку подключения, убедитесь, что ваш mysql включен и у вас есть все таблицы, существующие в базе данных.
Touqeer Shafi
Ответы:
12
У меня была такая же проблема при установке Magento 2.1.0 с PHP 7.0.13. Я мог бы решить эту проблему, установив имя хоста базы данных как 127.0.0.1 вместо localhost .
Если ваш сервер в списке app/etc/local.xmlесть, localhostи эта ошибка появляется в журнале ошибок Magento, но Magento все еще работает нормально, то mysql был перезапущен, и сокет /tmp/mysql.sockили любой другой файл сокета, в котором настроен файл сокета, my.cnfвременно исчез.
Поскольку это отсутствует, соединитель MySQL PDO сообщает SQLSTATE[HY000] [2002] No such file or directory
Если вы постоянно получаете эту ошибку и не имеете доступа к Magento, кроме страницы «Ошибка исключения», то mysql полностью потерпел крах, и вам нужен ваш хостинг-провайдер, чтобы выяснить причину и перезапустить mysql.
У меня была такая же проблема, и я использовал ниже, чтобы выбрать, какой PHP должен использовать. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Убедитесь, что вы правильно отредактировали ваше приложение / etc / local.xml . Если у вас нет префиксов для ваших таблиц, убедитесь, что правильная строка:
Это обычно вызывается другим экземпляром PHP, используемым командной строкой PHP, по сравнению с веб-сервером. В частности, mysql.sockможет быть неправильно настроен, если это так.
Чтобы определить, используете ли вы один экземпляр PHP:
Войдите на свой сервер Magento.
Введите следующую команду:
php -i | grep 'php.ini'
Это определяет настройки, используемые интерфейсом командной строки PHP (CLI). Обратите внимание, где php.iniнаходится.
Если вы еще этого не сделали, настройте phpinfo.phpна своем веб-сервере.
Сравните значение загруженного файла конфигурации из phpinfo.phpс одной из php -i.
phpinfo.phpпоказывает php.iniфайл, используемый вашим веб-сервером. Если это отличается от того, что в PHPphp.ini , вы должны сделать все настройки PHP согласованными как для CLI PHP, так и для веб-сервера.
Для получения дополнительной информации обратитесь к документации, прилагаемой к вашему веб-серверу.
У меня есть несколько версий PHP, доступных для меня через оболочку - ввод php и нажатие на вкладку показывает, о чем знает мое автозаполнение.
Для меня 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
(обратите внимание , что это называется туздО не просто MySQL )
У меня есть несколько версий php на выбор, и эти команды показали мне, какие из них были проблемы, а какие были в порядке:
Для меня ответом было просто включить код в сценарий поставщика vagrant для создания символической ссылки между /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
При наличии новой символической ссылки приведенный выше тестовый скрипт теперь отлично работает для всех версий PHP, и я могу использовать localhost в своем коде вместо того, чтобы указывать IP-адрес 127.0.0.1 .
Я получаю ту же ошибку "SQLSTATE [HY000] [2002] Нет такого файла или каталога". И обнаружил, что служба MySQL была остановлена. Я запустил свой сервис MySQL, и он работает нормально.
Ответы:
У меня была такая же проблема при установке Magento 2.1.0 с PHP 7.0.13.
Я мог бы решить эту проблему, установив имя хоста базы данных как 127.0.0.1 вместо localhost .
источник
Если ваш сервер в списке
app/etc/local.xml
есть,localhost
и эта ошибка появляется в журнале ошибок Magento, но Magento все еще работает нормально, то mysql был перезапущен, и сокет/tmp/mysql.sock
или любой другой файл сокета, в котором настроен файл сокета,my.cnf
временно исчез.Поскольку это отсутствует, соединитель MySQL PDO сообщает
SQLSTATE[HY000] [2002] No such file or directory
Если вы постоянно получаете эту ошибку и не имеете доступа к Magento, кроме страницы «Ошибка исключения», то mysql полностью потерпел крах, и вам нужен ваш хостинг-провайдер, чтобы выяснить причину и перезапустить mysql.
источник
установите имя хоста базы данных как 127.0.0.1 вместо localhost.
источник
Это также может произойти, если ваша файловая система заполнена ... df -h 1st ... ofcourse, в основном вы должны получать уведомления до этого ...
MySQL не будет работать нормально, и будет в "безопасном" режиме
HTH SNS
источник
У меня была такая же проблема, и я использовал ниже, чтобы выбрать, какой PHP должен использовать.
/usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
См. Официальные документы: SQLSTATE [HY000] [2002] Нет такого файла или каталога
источник
Убедитесь, что вы правильно отредактировали ваше приложение / etc / local.xml . Если у вас нет префиксов для ваших таблиц, убедитесь, что правильная строка:
НЕ
источник
Это обычно вызывается другим экземпляром PHP, используемым командной строкой PHP, по сравнению с веб-сервером. В частности,
mysql.sock
может быть неправильно настроен, если это так.Чтобы определить, используете ли вы один экземпляр PHP:
Введите следующую команду:
Это определяет настройки, используемые интерфейсом командной строки PHP (CLI). Обратите внимание, где
php.ini
находится.phpinfo.php
на своем веб-сервере.phpinfo.php
с одной изphp -i
.phpinfo.php
показываетphp.ini
файл, используемый вашим веб-сервером. Если это отличается от того, что в PHPphp.ini
, вы должны сделать все настройки PHP согласованными как для CLI PHP, так и для веб-сервера.Для получения дополнительной информации обратитесь к документации, прилагаемой к вашему веб-серверу.
источник
У меня есть несколько версий PHP, доступных для меня через оболочку - ввод php и нажатие на вкладку показывает, о чем знает мое автозаполнение.
Для меня PHP 5.4, 5.5 и 5.6 все работали нормально, но PHP 7 не нашел mysql.sock и зависал с сообщением «SQLSTATE [HY000] [2002] Нет такой ошибки файла или каталога», обсуждаемым в этом вопросе. ,
Чтобы увидеть, где у вашего сервера mysql свой сокет, используйте эту команду:
В моем случае, когда Percona Mysql установлен в моей бродячей системе, файл сокета-сокета оказался здесь:
(обратите внимание , что это называется туздО не просто MySQL )
У меня есть несколько версий php на выбор, и эти команды показали мне, какие из них были проблемы, а какие были в порядке:
Для меня ответом было просто включить код в сценарий поставщика vagrant для создания символической ссылки между /tmp/mysql.sock и /var/run/mysqld/mysqld.sock
При наличии новой символической ссылки приведенный выше тестовый скрипт теперь отлично работает для всех версий PHP, и я могу использовать localhost в своем коде вместо того, чтобы указывать IP-адрес 127.0.0.1 .
источник
Я получаю ту же ошибку "SQLSTATE [HY000] [2002] Нет такого файла или каталога". И обнаружил, что служба MySQL была остановлена. Я запустил свой сервис MySQL, и он работает нормально.
источник
Кажется, это неправильная проблема с версией PHP, вам нужно выбрать, какой php использовать для запуска команды, следующим образом:
PS: Пример выше для MAC, вы можете сделать это аналогичным образом для Windows или Unix.
источник