SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리 오류가 없습니다.


14

요청을 처리하는 중에 오류가 발생했습니다

SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리가 없습니다.

위의 오류가 발생하면 누군가이 문제를 해결할 수있는 솔루션을 제공하십시오.


연결 문자열을 변경하여 수정했습니다 .mysql이 켜져 있고 모든 테이블이 데이터베이스에 있는지 확인하십시오.
Touqeer Shafi 2016 년

답변:


12

PHP 7.0.13과 함께 Magento 2.1.0을 설치하는 동안 동일한 문제가 발생했습니다.
데이터베이스 호스트 이름localhost 대신 127.0.0.1 로 설정하여이 문제를 해결할 수 있습니다.


어디에서해야합니까?
joeybab3 3

내부 ./app/etc/env.php
Jino

10

에 나열된 서버가있는 경우 app/etc/local.xml이며 localhost이 오류가 젠토의 오류 로그에 나타납니다,하지만 젠토는 아직 확인을 실행 한 후 MySQL을 다시 시작했다 소켓 /tmp/mysql.sock또는 어떤 소켓 파일이 설정되어 my.cnf일시적으로 사라졌다.

누락되었으므로 PDO mysql 커넥터가보고합니다. SQLSTATE[HY000] [2002] No such file or directory

이 오류가 계속 발생하고 예외 오류 페이지에서 Magento에 액세스 할 수없는 경우 mysql이 완전히 중단 된 것이므로 호스팅 공급자가 이유를 찾아 mysql을 다시 시작해야합니다.


6

데이터베이스 호스트 이름을 localhost 대신 127.0.0.1로 설정하십시오.


2

UR 파일 시스템이 가득 찬 경우에도 발생할 수 있습니다 ... df -h 1st ... 물론, 대부분 그 전에 경고를받습니다 ...

mysqld는 정상적으로 동작하지 않으며 "안전한"모드에있을 것이다

HTH SNS



0

app / etc / local.xml을 올바르게 편집하십시오 . 테이블에 접두사가없는 경우 올바른 행이 다음인지 확인하십시오.

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

아니

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

0

이것은 일반적으로 웹 서버와 비교하여 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.phpphp.ini웹 서버에서 사용 하는 파일을 보여줍니다 . PHP의 내용과 다른 경우 php.iniPHP CLI 및 웹 서버 모두에 대해 모든 PHP 설정을 일관성있게 만들어야합니다.

자세한 내용은 웹 서버와 함께 제공된 설명서를 참조하십시오.


이런 일이 일어날 수 있습니다-지금 당장 직면하고 있다고 생각합니다. 그런데 왜? 이 ini 파일을 체크인하는 것에 대한 구체적인 아이디어가 있습니까?
VladFr


0

쉘을 통해 여러 버전의 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이 아니라 mysqld 라고 함에 유의하십시오. )

선택할 수있는 여러 버전의 PHP가 있으며이 명령은 어느 것이 문제가 있고 어떤 것이 좋았는지 보여줍니다.

나에게 대한 대답은 단순히 vagrant provisioner 스크립트에 코드를 포함시켜 /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 버전에서 완벽하게 작동 하며 127.0.0.1 IP 주소 를 제공하는 대신 코드에서 localhost 를 사용할 수 있습니다 .


0

"SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리가 없습니다"라는 동일한 오류가 발생합니다. 그리고 MySQL 서비스가 중지되었음을 발견했습니다. MySQL 서비스를 시작하고 제대로 작동했습니다.


0

이것은 잘못된 PHP 버전 문제인 것 같습니다. 다음과 같이 명령을 실행하기 위해 사용해야하는 PHP를 선택해야합니다.

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

추신 : 위의 샘플은 MAC 용이며 Windows 또는 유닉스에서도 비슷한 방식으로 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.