我已经开始用德语的“ Zend Framework in Action”一书来学习Zend Framework。
就在开始变得有趣的地方,我的PHP单元测试抛出了此错误:“ Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002]没有这样的文件或目录”
我无法通过Google搜索找到任何提示。我做了所有的事情,就像书中那样。谁能给我提示到哪里寻找故障?
这是一个常见的初学者错误吗?
我已经开始用德语的“ Zend Framework in Action”一书来学习Zend Framework。
就在开始变得有趣的地方,我的PHP单元测试抛出了此错误:“ Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002]没有这样的文件或目录”
我无法通过Google搜索找到任何提示。我做了所有的事情,就像书中那样。谁能给我提示到哪里寻找故障?
这是一个常见的初学者错误吗?
http://
,仅使用IP。
Answers:
我想说的是从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 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位置。
$ 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
然后重新启动您的apache或php-fpm。
尝试在数据库设置文件中设置host = 127.0.0.1,它对我有用!:)
希望能帮助到你!
在osx中运行magento索引器时出现了这个问题。是的,通过pdo连接到mysql时,它与php问题有关
在Mac OS X XAMPP中,要解决此问题,您必须创建指向目录/ var / mysql的符号链接,这是方法
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
如果目录/ var / mysql不存在,则必须使用
sudo mkdir /var/mysql
php.ini
为OSX PHP(sudo cp /private/etc/php.ini.default /private/etc/php.ini
)创建一个文件,然后查找pdo_mysql.default_socket
并设置为:(pdo_mysql.default_socket=/Applications/MAMP/tmp/mysql/mysql.sock
对于MAMP),而不是这种讨厌的技巧。
我也遇到了这个问题,只是在IP地址保存我之后添加了端口号。
$dsn = 'mysql:dbname=sms_messenger;host=127.0.0.1:8889';
$user = 'root';
$password = 'root';
这适用于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
要么
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
看起来mysql服务无法正常工作或已停止。您可以使用以下命令(在Ubuntu中)启动它:
service mysql start
它应该工作!如果您使用的操作系统不是Ubuntu,请使用适当的方法启动mysql。