Zend framework 从Zend Tutorial开始-Zend_DB_适配器引发异常:";SQLSTATE[HY000][2002]没有此类文件或目录;

Zend framework 从Zend Tutorial开始-Zend_DB_适配器引发异常:";SQLSTATE[HY000][2002]没有此类文件或目录;,zend-framework,Zend Framework,我已经开始学习Zend框架,学习德语版的《Zend框架在行动》一书 就在这里,我的PHP单元测试引发了以下错误: “Zend_Db_Adapter_异常:SQLSTATE[HY000][2002]没有这样的文件或目录” 我在谷歌搜索中找不到任何提示。我做的每件事都像书上写的那样。 谁能给我一个提示,在哪里查找故障 这是初学者常见的错误吗?我想说的是,从PHP连接到MySQL时遇到了问题 比如PHP试图找到一些套接字文件,但没有找到它,也许? (这个问题我已经出现过好几次了——但我不确定我得到的错

我已经开始学习Zend框架,学习德语版的《Zend框架在行动》一书

就在这里,我的PHP单元测试引发了以下错误: “Zend_Db_Adapter_异常:SQLSTATE[HY000][2002]没有这样的文件或目录”

我在谷歌搜索中找不到任何提示。我做的每件事都像书上写的那样。 谁能给我一个提示,在哪里查找故障


这是初学者常见的错误吗?

我想说的是,从PHP连接到MySQL时遇到了问题

比如PHP试图找到一些套接字文件,但没有找到它,也许?
(这个问题我已经出现过好几次了——但我不确定我得到的错误是否就是这个)


如果您运行的是基于Linux的系统,那么应该有一个
my.cnf
文件,用于配置MySQL——在我的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框架

i、 e.做类似的工作:

如果不是,问题肯定不是ZF的问题,而是PHP的配置/安装问题


如果是。。。好的,这意味着你在使用ZF时遇到了问题,你需要向我们提供更多关于你的设置的信息(比如你的DSN?)

我在osx中运行magento indexer时遇到了这个问题。 是的,当通过pdo连接到mysql时,它与php问题有关

在MacOSXXAMPP中,要解决这个问题,需要创建指向目录/var/mysql的符号链接

cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
如果目录/var/mysql不存在,我们必须使用

sudo mkdir /var/mysql
不要假设您的unix_套接字彼此不同,尝试查找它。 首先,获取您的unix\u套接字位置

$ 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,从

<? phpinfo();

然后重新启动apache或php fpm。

尝试在db设置文件上设置host=127.0.0.1,它对我有效!:)


希望有帮助

Im也遇到了这个问题&简单地说,就是在ip地址保存我之后添加端口号


这适用于Mac OS

如果您不知道mysql端口号,则
您可以在MAMP主页上轻松找到端口号

在运行MAMP服务器时键入以下命令,将终端切换到
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

这个命令用于XAMPP服务器

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


看起来mysql服务要么不工作要么已停止。 您可以使用以下命令启动它(在Ubuntu中):


它应该有用!如果您使用的是Ubuntu以外的任何其他操作系统,请使用适当的方式启动mysql

是的!非常感谢你!!!如果没有这个暗示,我会在这里坐上几个小时。。。谢谢你的快速回复。问题:我已经在我的Mac上安装了MAMP(我的ubuntu服务器目前已关闭),出于某种原因,我的单元测试使用了/etc/php.ini而不是/Applicaton/MAMP/:bla:/php.ini,因此在我的代码中,我只需将MAMP ini中的套接字路径复制到etc/php.ini中,就可以了!很高兴看到我能帮上忙,而且你解决了你的问题:-);;感谢您的评论和解释“为什么”它不起作用!玩得开心;-)谢谢你的提示和评论,我也在Mac上,有同样的问题。我不使用任何php.ini,所以我只运行了“sudo ln-s/tmp/mysql.sock/var/mysql/mysql.sock”,现在一切都好了。非常感谢,很奇怪,不管用什么方法,都可以用这种方式解决。来这里的聚会太晚了,但我想对@PascalMARTIN的这篇帖子表示衷心的感谢。救生员!使用MySQL的IP地址host@Nguyen你是达曼!你帮的比那个有183k的家伙还多lol@Nguyen-谢谢,我也修复了它(将“localhost”更改为127.0.0.1)。这是在Laravel下的PDO中,所以它并不特定于Zend框架。谢谢!这对我也有帮助。重要提示:不要使用
http://
,只使用IP。重新启动mysql服务器,为我完成了这项工作!也与mamp合作;CD/VAR/MySQL & SUDO-LN-S/APPL/MMP/TMP/MySQL/myq.SokStand,对于这个讨厌的黑客,您应该考虑为OXX PHP创建一个<代码> PHP.ini代码/代码>(<代码> SudoCp/Buff/ETC/PHPIN.DEFAUL/PUT/ETC/PHP.INI < /代码>)然后查找
pdo_-mysql.default_-socket
并设置为:
pdo_-mysql.default_-socket=/Applications/MAMP/tmp/mysql/mysql.sock
(用于MAMP)。cd/var/mysql&&sudo-ln-s/Applications/MAMP/tmp/mysql/mysql.sock也在我的MAMP/Laravel设置中工作。我遇到了完全相同的问题:我的mysql.default-socket中有一个空值,所以我把这个值改成了真实的套接字位置,就像lijinma指出的那样,它成功了!谢谢
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
cd /var/mysql && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
cd /tmp && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
    cd /var/mysql && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
    cd /tmp && sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
service mysql start