从Zend教程开始 – Zend_DB_Adapter抛出exception:“SQLSTATE 没有这样的文件或目录”

我开始用德文版的“Zend Framework in Action”学习Zend Framework。

在那里它开始变得有趣我的PHPunit testing引发此错误:“Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002]没有这样的文件或目录”

我无法find任何提示在谷歌。 我做了这本书中的所有内容。 任何人都可以给我一个暗示在哪里寻找我的错?

这是一个通常的初学者错误?

我会说,你有一个连接从PHP到MySQL的问题…

像PHP试图find一些套接字文件,而不是find它,也许?
(我有这个问题几次 – 不知道我得到的错误正是这一个,虽然)

如果你正在运行一些基于Linux的系统,应该有一个my.cnf文件,用于configurationMySQL – 在我的Ubuntu上,它在/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 

(您需要重新启动Apache,以便将对php.ini的修改考虑在内)

最后一个应该足够用于Zend Framework使用的PDO,但是前两个不会造成任何伤害,并且可以用于其他应用程序。

如果这没有帮助:你可以连接到你的数据库使用PDO,在另一个脚本,这是完全独立于Zend框架?

即做这样的工作(引用)

 $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的configuration/安装问题。

如果是的话……那么,这意味着ZF有问题,你需要给我们更多关于你的设置的信息(比如你的DSN)?

不要假设你的unix_socket从一个到另一个不同,试着find它。

首先, 获取你的unix_socket位置

 $ mysql -u root -p 

input你的mysql密码并从命令行login你的mysql服务器。

 mysql> show variables like '%sock%'; +---------------+---------------------------------------+ | Variable_name | Value | +---------------+---------------------------------------+ | socket | /opt/local/var/run/mysql5/mysqld.sock | +---------------+---------------------------------------+ 

你的unix_soket可能是不同的。

然后改变你的php.ini,find你的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 

然后重新启动你的apache或php-fpm。

尝试设置主机= 127.0.0.1您的数据库设置文件,它为我工作! 🙂

希望它有帮助!

在osx中​​运行magento索引器时,我遇到了这个问题。 是的,它涉及到通过pdo连接到MySQL时的PHP问题

在mac osx xampp中,为了解决这个问题,你已经创build了目录/ var / mysql的符号链接,这里是如何实现的

 cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

如果目录/ var / mysql不存在,我们必须使用

 sudo mkdir /var/mysql 

我也遭受了这个问题&简单地说,通过添加端口号后的IP地址救了我。

 $dsn = 'mysql:dbname=sms_messenger;host=127.0.0.1:8889'; $user = 'root'; $password = 'root'; 

这适用于Mac OS

如果你不知道你的mysql的端口号,那么
您可以在MAMP主页上轻松find端口号

要么

在运行MAMP服务器的同时input以下命令将terminal切换到mysql

 OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot 

然后键入

 mysql> SHOW GLOBAL VARIABLES LIKE 'PORT'; 

这个错误是因为mysql试图通过错误的套接字文件连接

试试MAMP服务器的这个命令

 cd /var/mysql && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock 

要么

 cd /tmp && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock 

这个命令用于XAMPP服务器

  cd /var/mysql && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock 

要么

  cd /tmp && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock