1

我正在将 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);

感谢任何帮助,谢谢。

4

3 回答 3

1

您应该检查的几件事

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

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

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

如果它不起作用。返回确切的错误消息。

于 2011-07-16T22:08:12.847 回答
0

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

于 2011-07-16T23:28:40.770 回答
0

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

你不需要mysqld安装,但你需要 MySQL 客户端库。

于 2011-07-16T22:03:53.177 回答