Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework 从Zend教程开始-Zend_DB_适配器引发异常:“SQLSTATE[HY000][2002]没有这样的文件或目录”_Zend Framework - Fatal编程技术网

Zend framework 从Zend教程开始-Zend_DB_适配器引发异常:“SQLSTATE[HY000][2002]没有这样的文件或目录”

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

我已经开始学习Zend Framework,用德语编写了Zend Framework in Action一书

就在这里,我的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索引器时遇到了这个问题。 是的,当通过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_套接字的位置

输入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

然后键入

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中使用以下命令启动它:

service mysql start

它应该有用!如果您使用的是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/Apvest/MAMP/TMP/MySQL/MySQL LoSkistDeST这个讨厌的黑客,您应该考虑为OXX PHP SUDO创建PHPini文件。
cp/private/etc/php.ini.default/private/etc/php.ini,然后查找pdo_-mysql.default_-socket并设置为:pdo_-mysql.default_-socket=/Applications/MAMP/tmp/mysql/mysql.sock for MAMP.cd/var/mysql&&sudo-ln-s/Applications/MAMP/tmp/mysql/mysql.sock也在我的MAMP/larvel设置中工作。我遇到了完全相同的问题:我的内存中有一个空值默认的套接字,所以我把这个值改成了真实的套接字位置,就像lijinma指出的那样,它成功了!谢谢
OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
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