Zend 자습서로 시작-Zend_DB_Adapter에서 예외 발생 : "SQLSTATE [HY000] [2002] 해당 파일 또는 디렉터리가 없습니다."
저는 독일어로 된 "Zend Framework in Action"책으로 Zend Framework를 배우기 시작했습니다.
흥미로워지기 시작하는 바로 거기에서 내 PHP 단위 테스트에서 "Zend_Db_Adapter_Exception : SQLSTATE [HY000] [2002] No such file or directory"라는 오류가 발생합니다.
Google 검색을 통해 힌트를 찾을 수 없습니다. 나는 책에있는 것처럼 모든 것을했다. 누구든지 어디에서 결함을 찾을 수 있는지에 대한 힌트를 줄 수 있습니까?
이것은 일반적인 초보자 실수입니까?
PHP에서 MySQL로 연결하는 데 문제가 있다고 말하고 싶습니다.
PHP가 소켓 파일을 찾으려고 시도했지만 찾지 못하는 것 같습니다.
(나는이 문제를 몇 번 겪었습니다. 내가 얻은 오류가 정확히 이것이인지 확실하지 않습니다)
일부 Linux 기반 시스템을 실행하는 경우 my.cnf
MySQL을 구성하는 데 사용되는 파일이 어딘가에 있어야합니다. 우분투에서는 /etc/mysql/
.
이 파일에는 다음과 같은 내용이있을 수 있습니다.
socket = /var/run/mysqld/mysqld.sock
PHP는 동일한 파일을 사용해야하며 배포에 따라 기본 파일이 MySQL에서 사용하는 파일과 동일하지 않을 수 있습니다.
이 경우 php.ini
파일에 다음 줄을 추가하면 도움이 될 수 있습니다.
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
(수정 사항을 php.ini
고려 하려면 Apache를 다시 시작해야 합니다.)
마지막 하나는 Zend Framework에서 사용되는 PDO에 충분해야하지만 이전 두 가지는 아무런 해를 끼치 지 않으며 다른 응용 프로그램에 유용 할 수 있습니다.
이것이 도움이되지 않는다면, 다른 스크립트에서 PDO를 사용하여 데이터베이스에 연결할 수 있습니까? 그것은 Zend Framework와 완전히 독립적입니까?
즉,이 작업 (인용) 과 같은 작업을 수행합니다 .
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
아니라면 문제는 확실히 ZF가 아니라 PHP의 구성 / 설치 문제입니다.
그렇다면 ... 음, ZF에 문제가 있음을 의미하며, 설정에 대한 자세한 정보를 제공해야합니다 (예 : DSN,?).
서로 다른 unix_socket을 가정하지 말고 찾아보십시오.
우선, unix_socket 위치를 얻으십시오 .
$ mysql -u root -p
mysql 비밀번호를 입력하고 명령 줄에서 mysql 서버에 로그인합니다.
mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------+
| socket | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
귀하의 unix_soket은 다를 수 있습니다.
그런 다음 php.ini를 변경하고 다음 php.ini
에서 파일을 찾습니다.
<? phpinfo();
버전이 다른 많은 PHP를 설치할 수 있으므로 php.ini 파일 위치를 가정하지 말고 'phpinfo'에서 가져 오십시오.
php.ini를 변경하십시오.
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Then restart your apache or php-fpm.
Try setting host=127.0.0.1 on your db settings file, it worked for me! :)
Hope it helps!
i had this problem when running the magento indexer in osx. and yes its related to php problem when connecting to mysql through pdo
in mac osx xampp, to fix this you have create symbolic link to directory /var/mysql, here is how
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
if the directory /var/mysql doesnt exist, we must create it with
sudo mkdir /var/mysql
Im also suffered from this problem & simply, by adding port number after the ip address saved me.
$dsn = 'mysql:dbname=sms_messenger;host=127.0.0.1:8889'; $user = 'root'; $password = 'root';
This works for Mac OS
If you don't know your mysql port number, then
You can easily find the port number on MAMP home page
OR
Type following command while running the MAMP server to switch the terminal into mysql
OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
Then type
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
This error because mysql is trying to connect via wrong socket file
try this command for MAMP servers
cd /var/mysql && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
or
cd /tmp && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
and this commands for XAMPP servers
cd /var/mysql && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
or
cd /tmp && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
It looks like mysql service is either not working or stopped. you can start it by using below command (in Ubuntu):
service mysql start
It should work! If you are using any other operating system than Ubuntu then use appropriate way to start mysql
'Program Tip' 카테고리의 다른 글
인앱 구매를 설정하는 방법 ( "메타 데이터 누락") (0) | 2020.11.04 |
---|---|
Python 속성 확인을위한 get () 유사 메소드 (0) | 2020.11.04 |
json Uncaught SyntaxError : 예기치 않은 토큰 : (0) | 2020.11.04 |
“미해결 포함 : (0) | 2020.11.04 |
CSV 파일을 Pandas DataFrame으로 가져 오기 (0) | 2020.11.04 |