我正在将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);
感谢任何帮助,谢谢。
答案 0 :(得分:1)
你应该检查几件事
确保主机值正确无误。双&三重检查
最后,尝试使用命令行手动连接,通过以下命令。
$ 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')
正在返回正确的值吗?您描述的行为听起来很像是返回空值或空值。