Zend framework 从Zend教程开始-Zend_DB_适配器引发异常:“SQLSTATE[HY000][2002]没有这样的文件或目录”
我已经开始学习Zend Framework,用德语编写了Zend Framework in Action一书 就在这里,我的PHP单元测试引发了以下错误: Zend_Db_Adapter_异常: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试图找到一些套接字文件,但没有找到它,也许? 这个问题我已经出
这是初学者常见的错误吗?我想说的是,从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