我已经开始用德语中的“Zend Framework in Action”一书来学习Zend Framework。
在那里它开始变得有趣,我的PHP单元测试抛出此错误: “Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002]没有这样的文件或目录”
我无法通过Google搜索找到任何提示。我做了书中所做的一切。 谁能给我一个关于在哪里搜索错误的提示?
这是一个常见的初学者错误吗?
答案 0 :(得分:74)
我想说你从PHP连接到MySQL有问题......
像PHP试图找到一些套接字文件而不是找到它的东西,可能吗?
(我已经有过几次这个问题了 - 不知道我得到的错误恰恰就是这个问题)
如果您正在运行一些基于Linux的系统,那么在我的Ubuntu上应该有一个用于配置MySQL的my.cnf
文件,它位于/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?
即。做这样的工作(quoting):
$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?)
答案 1 :(得分:35)
首先,获取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。
答案 2 :(得分:15)
尝试在db设置文件中设置host = 127.0.0.1,它对我有用! :)
希望它有所帮助!
答案 3 :(得分:6)
我在osx中运行magento索引器时遇到了这个问题。 是的,它通过pdo
连接到mysql时与php问题有关在mac osx xampp中,为了解决这个问题你已经创建了到目录/ var / mysql的符号链接,这里是如何
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
如果目录/ var / mysql不存在,我们必须用
创建它sudo mkdir /var/mysql
答案 4 :(得分:4)
我也遇到了这个问题&amp;简单地说,通过在IP地址后添加端口号保存了我。
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ... url = "https://readability-score.com/" text = "Hello hello hello, this is a test" driver.get(url) WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.ID, "text_to_score")) ) # Wait until the `text_to_score` element appear (up to 5 seconds) driver.find_element_by_id("text_to_score").clear() driver.find_element_by_id('text_to_score').send_keys(text)
这适用于Mac OS
如果你不知道你的mysql端口号,那么
您可以在MAMP主页上轻松找到端口号
OR
在运行MAMP服务器时键入以下命令以将终端切换为$dsn = 'mysql:dbname=sms_messenger;host=127.0.0.1:8889';
$user = 'root';
$password = 'root';
mysql
然后输入
OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
答案 5 :(得分:1)
此错误是因为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
答案 6 :(得分:1)
看来mysql服务无法正常工作或已停止。 您可以使用以下命令(在Ubuntu中)启动它:
service mysql start
应该可以!如果您使用的操作系统不是Ubuntu,请使用适当的方法启动mysql