찾다

 >  Q&A  >  본문

PDOException SQLSTATE 파일 또는 디렉토리가 존재하지 않습니다.

<p> 매우 기본적인 웹사이트를 fortrabbit에 성공적으로 배포했다고 생각하지만 일단 SSH에 연결하면 <code>php artisan migration</code> 또는 <code>php artisan db:seed< ;/code>), 오류 메시지를 받게 됩니다: </p> <pre class="brush:php;toolbar:false;">[PDOException] SQLSTATE[HY000] [2002] 해당 파일이나 디렉터리가 없습니다</pre> <p>내 테이블이 존재하기 때문에 어느 시점에서는 마이그레이션이 성공했을 것입니다. 하지만 지금은 마이그레이션이 작동하지 않는 이유는 설명되지 않습니다. </p>
P粉038161873P粉038161873470일 전632

모든 응답(2)나는 대답할 것이다

  • P粉731977554

    P粉7319775542023-08-11 00:43:41

    이 오류가 발생하는 가장 간단한 이유 중 하나는 MySQL 서버가 실행되고 있지 않기 때문입니다. 따라서 첫 번째 단계는 확인하는 것입니다. 작동하는 경우 다른 제안 사항은 다음과 같습니다.

    저도 똑같은 문제를 겪었습니다. 위의 솔루션 중 어느 것도 나에게 효과적이지 않았습니다. /app/config/database.php 파일의 "host"를 "localhost"에서 "127.0.0.1"로 변경하여 문제를 해결했습니다.

    "localhost"가 기본적으로 작동하지 않는 이유는 확실하지 않지만 비슷한 문제에 대한 답변을 찾았고 Symfony2 게시물에서 해결되었습니다. https://stackoverflow.com/a/9251924

    업데이트: 일부 사람들은 이 수정 사항이 왜 효과가 있는지 물었고, 그래서 저는 이 문제에 대해 조사해 보았습니다. 이 게시물에 설명된 대로 서로 다른 연결 유형을 사용합니다. https://stackoverflow.com/a/9715164

    여기서 문제는 "localhost"가 UNIX 소켓을 사용하고 표준 디렉터리에서 데이터베이스를 찾을 수 없다는 것입니다. 그러나 "127.0.0.1"은 TCP(전송 제어 프로토콜)를 사용합니다. 즉, 컴퓨터의 "로컬 네트워크"를 통해 실행되며 UNIX 소켓보다 더 안정적입니다.

    회신하다
    0
  • P粉148434742

    P粉1484347422023-08-11 00:10:06

    오류 메시지는 소켓(지원되지 않음)을 통해 MySQL 연결을 설정하려는 시도를 나타냅니다.

    Laravel(artisan)의 맥락에서 다른/올바른 환경을 사용하고 싶을 수도 있습니다. 예: php artisan migrate --env=production(또는 기타 환경). 여기를 참조하세요.

    회신하다
    0
  • 취소회신하다