PDOException SQLSTATE[HY000] [2002] 해당 파일 또는 디렉터리가 없습니다.
기본적인)만, 하면, 커맨드(「fortrabbit를할 수 .php artisan migrate
★★★★★★★★★★★★★★★★★」php artisan db:seed
에러 메세지가 표시됩니다.
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
테이블이 있기 때문에 어느 시점에서는 이행이 성공했을지도 모릅니다만, 지금은 이 이행이 기능하지 않는 이유는 설명되지 않습니다.
Larabel 4: 에서 "호스트"를 변경합니다.
app/config/database.php
을 "로 변경합니다.1'은요?Larabel 5+: 에서 "DB_HOST" 를 변경합니다.
.env
을 "로 변경합니다.1'은요?
나도 똑같은 문제가 있었어.위의 솔루션 중 어느 것도 나에게 효과가 없었다./app/config/database에서 "host"를 변경하여 문제를 해결했습니다.php 파일을 "localhost"에서 "190.0.1"로 변경합니다.
왜 "localhost"가 기본적으로 작동하지 않는지 잘 모르겠지만, 이 답변은 symfony2 투고에서 해결된 유사한 질문에서 찾을 수 있었습니다.https://stackoverflow.com/a/9251924/1231563
업데이트: 이 수정이 왜 효과가 있는지에 대한 질문을 받았기 때문에 이 주제에 대해 조금 조사했습니다.이 게시물 https://stackoverflow.com/a/9715164/1231563에서 설명한 바와 같이 서로 다른 연결 유형을 사용하는 것 같습니다.
여기서 발생한 문제는 "localhost"가 UNIX 소켓을 사용하여 표준 디렉토리에서 데이터베이스를 찾을 수 없다는 것입니다.단, "127.0.0.1"은 TCP(Transmission Control Protocol)를 사용합니다.이는 기본적으로 컴퓨터의 "로컬 인터넷"을 통해 실행되므로 이 경우 UNIX 소켓보다 훨씬 신뢰성이 높다는 것을 의미합니다.
이 오류 메시지는 소켓을 통한 MySQL 연결이 시도되었음을 나타냅니다(지원되지 않음).
Laravel(장인)의 문맥에서는 다른 올바른 환경을 사용하는 것이 좋습니다. ::php artisan migrate --env=production
(또는 모든 환경).여기 보세요.
같은 문제가 발생하여 Mac OS X 10.10 Yosemite를 실행하고 있습니다.OS에 부속되어 있는 Apache Server와 PHP를 유효하게 하고 있습니다.그리고 mCrypt 라이브러리를 시작하도록 설정했습니다.그 후 모델 및 DB 작업 시 다음과 같은 오류가 발생했습니다.
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
제가 찾은 이유는 단지 PHP와 MySQL이 서로 연결되지 않기 때문입니다.이 문제를 해결하려면 다음 단계를 따릅니다.
터미널을 열고 다음 명령을 사용하여 mysql에 연결합니다.
mysql -u root -p
관련 패스워드를 입력하도록 요구됩니다.mysql 프롬트가 뜨면 다음 명령을 입력합니다.
mysql> show variables like '%sock%'
다음과 같은 결과를 얻을 수 있습니다.
+-----------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------+-----------------+ | performance_schema_max_socket_classes | 10 | | performance_schema_max_socket_instances | 322 | | socket | /tmp/mysql.sock | +-----------------------------------------+-----------------+
마지막 행의 값을 유지합니다.
/tmp/mysql.sock
고객님의 고객명
laravel
프로젝트 폴더, 데이터베이스를 찾습니다.php 파일에는 DB 연결 파라미터를 설정할 수 있습니다.mysql 섹션에서 마지막에 다음 행을 추가합니다.'unix_socket' => '/tmp/mysql.sock'
다음과 같은 기능이 있어야 합니다.
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'SchoolBoard', 'username' => 'root', 'password' => 'venturaa', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'unix_socket' => '/tmp/mysql.sock', ),
변경 내용을 저장하고 페이지를 새로고침하기만 하면 됩니다.
만나다.[PDOException] SQLSTATE[HY000] [2002] No such file or directory
하다Apache 2.4.7, PHP v5.5.10, MySQL 5.6.16을 탑재한 Ubuntu 12.04에 새로운 LAMP 스택을 구축하는 것을 막 마치고 사이트를 다시 이동해 부팅했습니다.4.2 기반 는 Larabel 4.2.x할 수 없었습니다.[PDOException]
그래서 요. 이치노php -i | grep pdo
하다
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
내 my. sock ", /etc/my.cnf./var/run/mysqld/mysqld.sock
.
php 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
그걸로 해결됐어요.
@stuyam의 답변으로 "No such file or directory" 문제가 해결되었습니다.
간단한 답변: /app/config/database에서 "host"를 변경합니다.php 파일을 "localhost"에서 "128.0.0.1"로 변경
그런데 "접속 거부" 오류가 발생했습니다.같은 문제를 안고 있는 사람이 있다면 앱/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' => '',
),
저 같은 경우에는 전혀 문제가 없었고, mysql 서비스를 시작하는 것을 잊었을 뿐입니다.
sudo service mysqld start
Larabel Homesead를 사용하는 경우 서버에서 명령어를 호출하고 있는지 확인합니다.
homestead ssh
그런 다음 올바른 디렉토리로 cd를 이동하고 거기에서 명령을 실행합니다.
내가 바꾸고 나서 효과가 있었다.DB_HOST=localhost
로로 합니다.DB_HOST=127.0.0.1
파일 .env에 .
데이터베이스에 mysql.sock 경로를 추가합니다.아래 예시와 같은 php 파일
'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'),
이는 PDO가 "localhost" 호스트를 특별히 취급하기 때문입니다.
주의: Unix만:호스트명이 「localhost」로 설정되어 있는 경우는, 도메인 소켓을 개입시켜 서버에 접속합니다.PDO_MYSql이 libmysqlclient에 대해 컴파일된 경우 소켓파일의 위치는 libmysqlclient가 컴파일한 위치에 있습니다.PDO_MYSql이 mysqlnd에 대해 컴파일된 경우 pdo_mysql.default_socket 설정에 따라 기본 소켓을 설정할 수 있습니다.
(http://php.net/manual/en/ref.pdo-mysql.connection.php)에서 입수).
localhost 를 127.0.0.1 로 변경하면, TCP 가 「강제」사용됩니다.
주의: mysqli_connect는 localhost에서 정상적으로 동작하고 있습니다.
MAMP 사용자 활성화 옵션 MYSQL에 대한 네트워크 액세스 허용
@dcarrith의 답변을 바탕으로...
컨피규레이션파일을 편집하는 대신 실제 mysql.sock에 접속하는 에일리어스를 PHP가 찾고 있는 위치에 작성했습니다.(소스)
다음 2개의 명령어만 실행하면 됩니다(재기동 불필요).
mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
순서 1
경로를 하면 unix_socket을 실행할 수 .netstat -ln | grep mysql
이런 거 사와야 돼
unix 2 [ ACC ] STREAM LISTENING 17397 /var/run/mysqld/mysqld.sock
순서 2
이것을 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' <-----
),
),
도움이 되었으면 좋겠다!!
MAMP Pro에서 실행 중인데 마이그레이션(DB 테이블 생성)을 시도할 때 이와 유사한 문제가 발생했습니다.언급된 몇 가지 제안도 시도해 보았지만, 나를 위해 그렇게 하지는 않았다.
그래서 간단하게 (1시간 검색 후) /config/database에 두 가지를 추가했습니다.php.
'port' => '1234',
'unix_socket' => '/path/to/my/socket/mysqld.sock'
이제 잘 작동한다!
도커 컨테이너를 사용하여 응용 프로그램을 실행할 때 이 문제가 발생했습니다.
하고 있던 을 MySQL에 .docker_compose.yml
DB_HOST가 있다. 경우는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.db
:
DB_HOST=db
도움이 됐으면 좋겠다.
Elixir/Gulp 및 홈스테드에서 PHPunit을 실행하다가 이 문제가 발생하였습니다.
을 .env에서 했습니다.DB_HOST=localhost
로로 합니다.DB_HOST=192.168.10.10
서 ''는192.168.10.10
Vagrant/Homestead의 IP 주소.
포토를 주의 깊게 체크해 주세요.이 경우 8889로 8888을 사용하고 있습니다.이 경우 "DB_HOST"를 "localhost"에서 "127.0.0.1"로 변경합니다.
나는 Drupal 웹사이트에 접속하는데 비슷한 문제가 있었다.명령줄을 열고 MySQL 서버 또는 서비스를 재시작하여 수정했습니다.
service mysqld restart
이거면 될 거야.그렇지 않으면 로컬 웹 서버를 재시작합니다.
service httpd restart
그만하면 충분할 거야. .다른 환경에서도 효과가 있기를 바랍니다.일반적으로 이러한 명령어에는 superuser 특권이 필요합니다.
Docker를 해도 같은 문제가 .db
파일 docker_docker.yml ":
글에는 과 같은 되어 있습니다..env
삭제:
DB_HOST=db
또한 호스트가 php 앱에서 검색 가능한지 확인해야 합니다.
PHP가 어떤 호스트를 사용하여 연결해야 하는지 파악하지 못했기 때문입니다.
.env 파일을 1개만 변경하면 됩니다.
코드 라인은 다음과 같습니다.
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=
호스트 이름 localhost를 127.0.0.1로 변경합니다.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=
이 방법은 localhost와 같은 호스트 이름을 찾을 수 없기 때문에 제 경우 효과가 있습니다.
그리고 호스트 이름을 변경한 후 다음 명령을 씁니다.
php artisan config:clear
php artisan migrate:install
php artisan migrate
ubuntu 18.04에서도 nginx와 같은 문제가 발생하였습니다.다음 절차에 따라 문제를 해결했습니다.
먼저 단말기를 열고 mysql CLI로 들어갑니다.mysql 소켓 위치를 확인하기 위해 다음 명령을 작성합니다.
mysql> show variables like '%sock%'
다음과 같은 것이 있습니다.
+-----------------------------------------+-----------------------------+
| Variable_name | Value |
+-----------------------------------------+-----------------------------+
| mysqlx_socket | /var/run/mysqld/mysqlx.sock |
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| socket | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
4 rows in set (0.00 sec)
라라벨 프로젝트 폴더에서 데이터베이스를 찾으십시오.php 파일을 설정합니다.mysql 섹션에서 위 표에 따라 unix_socket을 수정했습니다.
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database_name',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'unix_socket' => '/var/run/mysqld/mysqld.sock',
),
변경 내용을 저장하고 페이지를 새로고침하면 작동합니다.
Larabel 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 를 참조해 주세요.
Laravel Homesead를 사용하는 경우 다음과 같은 설정이 있습니다.
(Vagrant-Virtual Machine 포함)
.syslog-profile(프로파일)
alias vm="ssh vagrant@127.0.0.1 -p 2222"
데이터베이스입니다.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
localhost 연결 시도:
SQLSTATE[HY000] [2002] No such file or directory
127.0.0.1에 접속해 보겠습니다.
SQLSTATE[HY000] [2002] Connection refused
myX 10), .cnf(OS X 10.5의 경우)에서 다음 코멘트 또는 합니다./opt/local/etc/mysqlxx/my.cnf
득득: :
[mysqld]
# skip-networking
물론 MySQL Server를 중지하고 시작합니다.
아직 답을 찾고 있는 사람이 있다면 .env 파일을 확인하세요.어떤 이유에서인지 larabel이 .env.example 파일을 생성했기 때문에 이 모든 답변이 나에게는 효과가 없었습니다..env.example을 .env로 리네밍하는 문제를 수정했습니다.
MySQL이 실행되지 않았기 때문에 이 문제가 발생했습니다.MySQL이 MySQL을 .MySQL my my my my my 。/usr/local/etc/my.cnf.d/
디렉토리로 이동합니다.
이것은 나의 요구였다./usr/local/etc/my.cnf
인크루드로서의 config file글로브 인크루드로서의 config file)include /usr/local/etc/my.cnf.d/*.cnf
를 참조해 주세요.
.mkdir /usr/local/etc/my.cnf.d
MySQL을 사용하다
제 경우 mac 터미널에서 php 장인 migrate를 실행하고 있을 때 vagrant에서 ssh를 실행하여 실행할 필요가 있었습니다.그게 누군가 두통에 도움이 됐으면 좋겠어요.
제 경우 부트스트랩/캐시 폴더를 삭제하고 다시 시도해야 했습니다.
내 세나리오가 서버 마이그레이션 후였어
해결된
코드의 논리적인 문제일 경우 연결 값은 if 문에 있습니다.
if($_SERVER['HTTP_HOST'] == "localhost")
그래서 해결방법은 파이프를 추가하고 127.0.0.1을 추가하는 것이었습니다.그것은 저에게 있어서 문제를 해결했습니다.
if($_SERVER['HTTP_HOST'] == "localhost" || $_SERVER['HTTP_HOST'] == "127.0.0.1")
Virtual Machine을 사용하는 경우 해당 시스템에 SSH하고 App 폴더로 이동한 후 php artisan migrate 명령을 호출해야 합니다.
언급URL : https://stackoverflow.com/questions/20723803/pdoexception-sqlstatehy000-2002-no-such-file-or-directory
'sourcecode' 카테고리의 다른 글
요소가 존재할 때까지 기다리는 방법 (0) | 2022.09.06 |
---|---|
외부 "C++"를 사용하는 이유는 무엇입니까? (0) | 2022.09.06 |
배열에 JavaScript/jQuery에 특정 문자열이 포함되어 있는지 확인하는 방법 (0) | 2022.09.06 |
MySQL 최적화: Different가 너무 느리다 (0) | 2022.09.06 |
클래스를 보호 클래스로 정의할 수 없는 이유는 무엇입니까? (0) | 2022.09.06 |