我开始学习Zend Framework,并使用德文版的书籍《Zend Framework in Action》。在进入有趣的部分时,我的PHP Unit测试出现了错误:“Zend_Db_Adapter_Exception: SQLSTATE [HY000] [2002] No such file or directory”。通过谷歌搜索我没有找到任何提示,我已经按照书中的步骤操作了。请问有人能给我指点一下如何查找错误吗?这是一个常见的初学者错误吗?
socket = /var/run/mysqld/mysqld.sock
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
也就是说,类似这样的代码是否有效 (引用) :
$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();
}
首先,获取你的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。
在我的OSX系统中运行Magento索引器时遇到了问题。是由于PHP通过PDO连接MySQL引起的。
在Mac OSX XAMPP中,要解决这个问题,你需要创建指向目录/var/mysql的符号链接。以下是具体步骤:
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
sudo mkdir /var/mysql
php.ini
文件(使用命令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)。 - TCB13我也遇到了这个问题,简单地说,通过在IP地址后添加端口号来解决。
$dsn = 'mysql:dbname=sms_messenger;host=127.0.0.1:8889';
$user = 'root';
$password = 'root';
这适用于Mac OSmysql
OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
然后输入
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
看起来mysql服务要么没有工作,要么停止了。 您可以使用以下命令启动它(在Ubuntu中):
service mysql start
应该可以工作!如果您使用的操作系统不是Ubuntu,则请使用适当的方式启动mysql。
cd /var/mysql && sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
or
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
http://
,只需使用 IP 地址。 - Liglo App