pdo_mysql无法创建mysqld.sock文件

时间:2011-07-16 21:54:16

标签: php nginx mysql.sock

我正在将PHP(php-fpm)添加到现有的Nginx Ubuntu 10.04服务器中,并且无法使pdo_mysql正常工作。我正在尝试连接到其他地方的MySQL服务器,但我找到的所有谷歌搜索答案都是关于MySQL无法在本地服务器上工作,所以我不确定如何继续。

我没有安装mysqld,所以我不确定是否需要它,或者是否有办法解决这个问题?另外我想知道它是否无法创建mysqld.sock,因为服务器上有mysql用户?

错误:

SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Fatal error: Call to a member function query() on a non-object

我的PHP连接代码:

$this->PDO = new PDO('mysql:host=' . $this->config->getValue('db_host') .
                             ';dbname=' . $this->config->getValue('db_name'),
                             $this->config->getValue('db_user'),
                             $this->config->getValue('db_pass'));

我的查询行失败了:

$PDOStatement = $this->PDO->query($query);

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

你应该检查几件事

  • 你安装了 mysql-client 吗?如果你连接到远程机器。你不需要在盒子上运行mysql,但我认为你仍然需要客户端。
  • 确保主机值正确无误。双&三重检查

  • 最后,尝试使用命令行手动连接,通过以下命令。

$ mysql -u <INSERT_USER_HERE> -p -h <INSERT_IP_OF_REMOTE_MACHINE_HERE> <INSERT_DB_NAME_HERE>

如果不起作用。回来时会收到确切的错误消息。

答案 1 :(得分:0)

您的服务器正在尝试连接到本地MySQL实例。如果数据库位于不同的远程服务器上,请确保配置文件的db_host值指向MySQL服务器的正确主机名。

您不需要安装mysqld,但您确实需要MySQL客户端库。

答案 2 :(得分:0)

您确定$this->config->getValue('db_host')正在返回正确的值吗?您描述的行为听起来很像是返回空值或空值。