복붙노트

PDOException SQLSTATE [HY000] [2002] 그러한 파일 또는 디렉토리가 존재하지 않는다

PHP

PDOException SQLSTATE [HY000] [2002] 그러한 파일 또는 디렉토리가 존재하지 않는다

필자는 fortrabbit에 내 사이트를 성공적으로 배포했지만 SSH에 연결하여 php artisan migrate 나 php artisan db : seed와 같은 명령을 실행하자마자 오류 메시지가 나타납니다.

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

내 테이블이 있기 때문에 어떤 시점에서 마이그레이션이 작동 했음에 틀림 없습니다. 그러나 이것이 지금 왜 저에게 효과가 있는지 설명하지 못합니다.

해결법

  1. ==============================

    1.이 오류 메시지는 소켓을 통한 MySQL 연결이 시도되었음을 나타냅니다 (지원되지 않음).

    이 오류 메시지는 소켓을 통한 MySQL 연결이 시도되었음을 나타냅니다 (지원되지 않음).

    Laravel (장인)의 맥락에서 다른 환경을 사용하고 싶을 것입니다. 예 : php artisan migrate --env = production (또는 모든 환경). 여기를 보아라.

  2. ==============================

    2.나는 똑같은 문제가 있었다. 위의 해결 방법 중 어느 것도 나를 위해 일하지 않았습니다. /app/config/database.php 파일의 "호스트"를 "localhost"에서 "127.0.0.1"로 변경하여이 문제를 해결했습니다.

    나는 똑같은 문제가 있었다. 위의 해결 방법 중 어느 것도 나를 위해 일하지 않았습니다. /app/config/database.php 파일의 "호스트"를 "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 소켓보다 훨씬 안정적이라는 것을 의미합니다.

  3. ==============================

    3.동일한 문제가 발생했으며 Mac OS X 10.10 Yosemite를 사용하고 있습니다. 이미 OS와 함께 제공되는 Apache Server와 PHP를 활성화했습니다. 그런 다음 방금 시작하기 위해 mCrypt 라이브러리를 구성했습니다. 그 후 모델과 DB로 작업 할 때 오류가 발생했습니다.

    동일한 문제가 발생했으며 Mac OS X 10.10 Yosemite를 사용하고 있습니다. 이미 OS와 함께 제공되는 Apache Server와 PHP를 활성화했습니다. 그런 다음 방금 시작하기 위해 mCrypt 라이브러리를 구성했습니다. 그 후 모델과 DB로 작업 할 때 오류가 발생했습니다.

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

    내가 발견 한 이유는 PHP와 MySQL이 직접 연결될 수 없기 때문입니다. 이 문제를 해결하려면 다음 단계를 따르십시오.

    'mysql'=> 배열 (             'driver'=> 'mysql',             'host'=> 'localhost',             'database'=> 'SchoolBoard',             'username'=> 'root',             'password'=> 'venturaa',             'charset'=> 'utf8',             '데이터 정렬'=> 'utf8_unicode_ci',             '접두어'=> '',             'unix_socket'=> '/tmp/mysql.sock',         ),

    이제 변경 사항을 저장하고 페이지를 새로 고침하면 제대로 작동합니다. 유용 할 수 있기를 바랍니다.

  4. ==============================

    4.[PDOException] SQLSTATE [HY000] [2002] 다른 이유로 이러한 파일 또는 디렉토리 오류가 발생했습니다. Apache 2.4.7, PHP v5.5.10 및 MySQL 5.6.16을 사용하여 Ubuntu 12.04에 새로운 LAMP 스택을 만들었습니다. 내 사이트를 다시 옮겨서 해고했다. 그러나 위의 [PDOException] 때문에 Laravel 4.2.x 기반 사이트를로드 할 수 없습니다. 그래서, php -i | grep pdo 그리고이 줄을 알아 냈습니다 :

    [PDOException] SQLSTATE [HY000] [2002] 다른 이유로 이러한 파일 또는 디렉토리 오류가 발생했습니다. Apache 2.4.7, PHP v5.5.10 및 MySQL 5.6.16을 사용하여 Ubuntu 12.04에 새로운 LAMP 스택을 만들었습니다. 내 사이트를 다시 옮겨서 해고했다. 그러나 위의 [PDOException] 때문에 Laravel 4.2.x 기반 사이트를로드 할 수 없습니다. 그래서, php -i | grep pdo 그리고이 줄을 알아 냈습니다 :

    pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
    

    그러나, 내 /etc/my.cnf에서 sock 파일은 실제로 /var/run/mysqld/mysqld.sock에 있습니다.

    그래서, php.ini를 열고 pdo_mysql.default_socket의 값을 설정합니다 :

    pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
    

    그런 다음 아파치를 다시 시작하고 php -i |를 확인했다. grep pdo :

    pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
    

    그것을 위해 그것을 고정.

  5. ==============================

    5.@stuyam의 답변으로 "No such file or directory"문제가 해결되었습니다.

    @stuyam의 답변으로 "No such file or directory"문제가 해결되었습니다.

    그런데 "Connection refused"오류가 발생했습니다. 누구든지 동일한 문제가 있다면, 내 솔루션은 app / config / local / database.php 파일을 업데이트하여 포트가 8889가되도록하십시오 :

    'mysql' => array(
            'driver'    => 'mysql',
            'host'      => '127.0.0.1',
            'port'      => '8889',
            'database'  => 'databaseName',
            'username'  => 'root',
            'password'  => 'root',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    
  6. ==============================

    6.Laravel Homestead를 사용하는 경우 서버에서 명령을 호출하는지 확인하십시오.

    Laravel Homestead를 사용하는 경우 서버에서 명령을 호출하는지 확인하십시오.

    homestead ssh
    

    그런 다음 올바른 디렉토리로 이동하여 명령을 실행하십시오.

  7. ==============================

    7.Mamp 사용자 활성화 옵션 MYSQL에 네트워크 액세스 허용

    Mamp 사용자 활성화 옵션 MYSQL에 네트워크 액세스 허용

  8. ==============================

    8.아래 예제와 같이 database.php 파일에 mysql.sock 경로 추가

    아래 예제와 같이 database.php 파일에 mysql.sock 경로 추가

    'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
    

    'mysql' => [
            'driver' => 'mysql',
            'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '8889'),
    
  9. ==============================

    9.제 경우에는 전혀 문제가 없었고 mysql 서비스를 시작하는 것을 잊었습니다 ...

    제 경우에는 전혀 문제가 없었고 mysql 서비스를 시작하는 것을 잊었습니다 ...

    sudo 서비스 mysqld 시작

  10. ==============================

    10.unix_socket에 대한 경로를 찾으십시오. netstat -ln | grep mysql

    unix_socket에 대한 경로를 찾으십시오. netstat -ln | grep mysql

    너는 이렇게해야한다.

    unix  2      [ ACC ]     STREAM     LISTENING     17397    /var/run/mysqld/mysqld.sock
    

    그것을 가져 와서 unix_socket 매개 변수에 추가하십시오.

    'mysql' => array(
                'driver'    => 'mysql',
                'host'      => '67.25.71.187',
                'database'  => 'dbname',
                'username'  => 'username',
                'password'  => '***',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'unix_socket'    => '/var/run/mysqld/mysqld.sock' <-----
                ),
            ),
    

    희망이 도움이 !!

  11. ==============================

    11.@dcarrith의 답변 작성 ...

    @dcarrith의 답변 작성 ...

    설정 파일을 편집하는 대신, 실제 mysql.sock에 연결하는 PHP가 찾고있는 위치에 별칭을 만들었습니다. (출처)

    이 두 명령을 실행하면됩니다 (재시작 필요 없음).

    mkdir /var/mysql
    ln -s /tmp/mysql.sock /var/mysql/mysql.sock
    
  12. ==============================

    12.MAMP Pro에서 실행 중이며 마이 그 레이션 (db 테이블 생성) 할 때 이와 비슷한 문제가 발생했습니다. 언급 된 제안 중 몇 가지를 시도했지만 나에게 도움이되지 않았습니다.

    MAMP Pro에서 실행 중이며 마이 그 레이션 (db 테이블 생성) 할 때 이와 비슷한 문제가 발생했습니다. 언급 된 제안 중 몇 가지를 시도했지만 나에게 도움이되지 않았습니다.

    그래서 간단히 (한 시간 씩 인터넷을 검색 한 후) /config/database.php에 두 가지를 추가했습니다.

    'port' => '1234',
    'unix_socket' => '/path/to/my/socket/mysqld.sock'
    

    이제 잘 작동합니다!

  13. ==============================

    13.이것은 PDO가 "localhost"호스트를 특별히 처리하기 때문입니다.

    이것은 PDO가 "localhost"호스트를 특별히 처리하기 때문입니다.

    (http://php.net/manual/en/ref.pdo-mysql.connection.php에서)

    localhost를 127.0.0.1로 변경하면 TCP 사용이 "강제 적용"됩니다.

    주의 : mysqli_connect는 localhost와 잘 동작한다.

  14. ==============================

    14.Laravel 5에서 데이터베이스 사용자 이름과 암호는 프로젝트 디렉토리에있는 .env 파일에 저장됩니다 (예 :

    Laravel 5에서 데이터베이스 사용자 이름과 암호는 프로젝트 디렉토리에있는 .env 파일에 저장됩니다 (예 :

    DB_HOST=127.0.0.1
    DB_DATABASE=db1
    DB_USERNAME=user1
    DB_PASSWORD=pass1
    

    보시다시피 이러한 환경 변수는 '위조'문자열을 무시하므로 영향을주지 않습니다.

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    

    자세한 내용은 https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables를 참조하십시오.

  15. ==============================

    15.필자는 Elixir / Gulp에서 PHPUnit을 실행할 때이 문제점에 부딪 쳤고, Homestead는 내 방랑 (Wagrant) 환경으로 실행되었습니다.

    필자는 Elixir / Gulp에서 PHPUnit을 실행할 때이 문제점에 부딪 쳤고, Homestead는 내 방랑 (Wagrant) 환경으로 실행되었습니다.

    제 경우에는 .env 파일을 DB_HOST = localhost에서 DB_HOST = 192.168.10.10으로 편집했습니다. 여기서 192.168.10.10은 My Vagrant / Homestead 호스트의 IP입니다.

  16. ==============================

    16.포트를주의 깊게 확인하십시오. 제 경우에는 8889 였고 8888을 사용하고 있습니다. "DB_HOST"를 "localhost"에서 "127.0.0.1"로 변경하고 그 반대의 경우도 마찬가지입니다.

    포트를주의 깊게 확인하십시오. 제 경우에는 8889 였고 8888을 사용하고 있습니다. "DB_HOST"를 "localhost"에서 "127.0.0.1"로 변경하고 그 반대의 경우도 마찬가지입니다.

  17. ==============================

    17.Laravel Homestead를 사용하는 경우, 여기에 설정이 있습니다.

    Laravel Homestead를 사용하는 경우, 여기에 설정이 있습니다.

    (Vagrant-Virtual Machine 포함)

    .bash-profile

    alias vm="ssh vagrant@127.0.0.1 -p 2222"
    

    database.php

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', '127.0.0.1'),
            'database'  => env('DB_DATABASE', 'homestead'),
            'username'  => env('DB_USERNAME', 'homestead'),
            'password'  => env('DB_PASSWORD', 'secret'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    

    단말기

    vm
    
    vagrant@homestead:~/Code/projectFolder  php artisan migrate:install
    
  18. ==============================

    18.localhost에 연결 시도 :

    localhost에 연결 시도 :

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

    127.0.0.1에 연결 시도 :

    SQLSTATE[HY000] [2002] Connection refused
    

    OK, my.cnf (OS X 10.5의 경우 : /opt/local/etc/mysqlxx/my.cnf)에서 다음 설정을 주석 처리 / 제거하면됩니다.

    [mysqld]
    # skip-networking
    

    물론, MySQL 서버를 중지하고 시작하십시오.

  19. ==============================

    19.누구든지 여전히 답을 찾고 있다면 .env 파일을 확인하십시오. 어떤 이유로 laravel은 .env.example 파일을 생성하므로이 모든 대답이 나에게 적합하지 않습니다. 내 문제를 .env.example의 이름을 .env로 바꾸는 문제를 수정했습니다.

    누구든지 여전히 답을 찾고 있다면 .env 파일을 확인하십시오. 어떤 이유로 laravel은 .env.example 파일을 생성하므로이 모든 대답이 나에게 적합하지 않습니다. 내 문제를 .env.example의 이름을 .env로 바꾸는 문제를 수정했습니다.

  20. ==============================

    20.MySQL이 작동하지 않기 때문에 이런 일이 일어났습니다. /usr/local/etc/my.cnf.d/ 디렉토리가 없어서 MySQL을 시작하지 못했습니다.

    MySQL이 작동하지 않기 때문에 이런 일이 일어났습니다. /usr/local/etc/my.cnf.d/ 디렉토리가 없어서 MySQL을 시작하지 못했습니다.

    내 /usr/local/etc/my.cnf 구성 파일에서 glob include (include /usr/local/etc/my.cnf.d/*.cnf)로 필요했습니다.

    mkdir /usr/local/etc/my.cnf.d를 실행 한 다음 MySQL을 시작하면 문제가 해결되었습니다.

  21. ==============================

    21.가상 머신을 사용할 때 해당 머신으로 ssh하고 App 폴더로 이동하여 거기에서 php artisan migrate 명령을 호출하십시오.

    가상 머신을 사용할 때 해당 머신으로 ssh하고 App 폴더로 이동하여 거기에서 php artisan migrate 명령을 호출하십시오.

  22. ==============================

    22.내 drupal 웹 사이트에 액세스하는 데 문제가 있었고 정확히 2 시간 이내에 해결 한 것과 같은 문제가있었습니다. 명령 줄에서 mysql 서버 나 서비스를 다시 시작하십시오. 루트 또는 수퍼 유저로 로그인 할 때 입력하십시오. - 서비스 mysqld restart

    내 drupal 웹 사이트에 액세스하는 데 문제가 있었고 정확히 2 시간 이내에 해결 한 것과 같은 문제가있었습니다. 명령 줄에서 mysql 서버 나 서비스를 다시 시작하십시오. 루트 또는 수퍼 유저로 로그인 할 때 입력하십시오. - 서비스 mysqld restart

    그것은 작동해야합니다. 로컬 웹 서버를 다시 시작하지 않으면, - 서비스 httpd restart

    그 정도면 충분합니다. 희망은 다른 환경에도 적용됩니다. 건배.

  23. ==============================

    23.5 월의 경우, 나는 단순히

    5 월의 경우, 나는 단순히

    vagrant up
    

    대신에

    homestead up
    

    농가를 사용하여 나의 위조 유충 설치를 위해. 나는 이것이 사이트가 제공되고 있다는 것을 의미한다고 가정하고 있지만, MySQL 서버는 부팅되지 않았습니다. 방황장을 시작하기 위해 후자의 명령을 사용했을 때 오류가 사라졌습니다.

  24. ==============================

    24.이 모든 대답은 무거운 짐을 싣는 것처럼 보입니다 ...

    이 모든 대답은 무거운 짐을 싣는 것처럼 보입니다 ...

    방금 .env 파일을 만들었습니다. 내 bootstrap / app.php 파일을 편집하고 다음 줄의 주석 처리를 제거했습니다 ...

    Dotenv ::로드 (__DIR __. '/ .. /');

    희망이 사람을 돕는

  25. ==============================

    25.[이것은 구식이며 데이터베이스 정보는 .env에 저장됩니다] 다음 방법으로 문제를 해결하는 더 쉬운 방법은

    [이것은 구식이며 데이터베이스 정보는 .env에 저장됩니다] 다음 방법으로 문제를 해결하는 더 쉬운 방법은

    app/config/local/database.php
    

    :)

    여기에서 데이터베이스 구성을 변경하면 제대로 작동합니다.

  26. ==============================

    26.내 경우, 나는 맥 숙련공으로 마이 그 레이션을하고 있었는데, 그때 나는 맥 (mac) 터미널로 이동했다. 희망은 누군가 두통을 돕습니다.

    내 경우, 나는 맥 숙련공으로 마이 그 레이션을하고 있었는데, 그때 나는 맥 (mac) 터미널로 이동했다. 희망은 누군가 두통을 돕습니다.

  27. ==============================

    27.그것은 나를 위해 올바른 응답입니다. 내 php.ini에서 pdo_mysql.default_socket 옵션을 비활성화하고 데이터베이스 호스트를 127.0.0.1로 설정했습니다.

    그것은 나를 위해 올바른 응답입니다. 내 php.ini에서 pdo_mysql.default_socket 옵션을 비활성화하고 데이터베이스 호스트를 127.0.0.1로 설정했습니다.

  28. from https://stackoverflow.com/questions/20723803/pdoexception-sqlstatehy000-2002-no-such-file-or-directory by cc-by-sa and MIT license