문제

나의 코드 작업은 모든 잘 어제와 오늘 갑자기 그냥하고 싶지 않는 데이터베이스에 연결.가 변경된 설정이 없거나에 코드를 업데이트하지 않았습니다.모든 소프트웨어다.나이:

new PDO('mysql:host=localhost;port=3306;dbname=test', 'username', 'password');

나는 좋은 예외 메시지가 이것을 말하기:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in ...

는 것입니다:난 명확하지 않을 사용하여 연결하려고 하는 유닉스 소켓만을 사용하여 TCP/IP.무엇이 잘못된 것입니까?뭔가가 나는 누락까요?

어떤 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

UNIX 소켓을 사용하고 있습니다. "LocalHost"를 읽을 때 MySQL 클라이언트 라이브러리는이를 TCP 호스트 "LocalHost"로 해석하지 않고 해당 이름을 해결하지만 기본 소켓 위치를 사용하십시오. 로컬 컴퓨터에서 TCP를 사용하려면 사용해야합니다. 127.0.0.1 호스트 이름으로.

과거 사용을 지정합니다 unix_socket대신에 host DSN에서. 사용 된 소켓의 위치 localhost 컴파일 시간 또는 일부 버전의 PHP에서 정의 할 수 있습니다. pdo_mysql.default_socket 에서 php.ini.

다른 팁

에서 PHP 에 대한 문서 연결하여 MySQL 를 사용하여 PDO: PDO_MYSQL DNS

참고 맨 마지막에 말한다:

Unix:

할 때 호스트 이름을 설정하면"localhost",그 다음 연결을 서버를 통해 도메인 소켓에.는 경우 PDO_MYSQL 컴파일에 대하여 libmysql 다음의 위치 socket 파일에서 libmysql 의 에서 컴파일한 위치에 있습니다.는 경우 PDO_MYSQL 컴파일에 대한 mysqlnd a 기본 소켓을 설정할 수 있습을 통해 pdo_mysql.default_socket 설정입니다.

그래서 이 문제를 해결하기 위해 당신을 올바로 구성 in php.ini 의 위치 mysql.양말

  1. 을 찾아 mysql.양말 파일입니다.일반적인 위치:

    • /tmp/mysql.양말
    • /tmp/mysql/mysql.양말
    • /var/mysql/mysql.양말
    • 거나 사용하는 경우 MAMP 또는 램프를 찾 내부 tmp 폴더 mysql
  2. 편집 php.ini 파일을 적절히 설정 값에 대한 pdo_mysql.default_socket

  3. 다시 시작 당신의 아파치 서버의 픽업에서 변경 php.ini 파일

Ubuntu에서는 php.ini 에서이 설정을 사용할 수 있습니다.

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

방금이 줄을 추가했습니다.

'unix_socket'   => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',

그리고 모든 것이 잘되었습니다.

문서화 된 Drush의 문서에 대한 업데이트가 있습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top