1

我正面临一个奇怪的情况。当我尝试使用“mysql”连接连接到 MySql 数据库时,它可以工作。

mysql connection string -> mysql_connect($HOST, $USER, $PASSWORD, $DB); 

但是当我使用“mysqli”或“PDO”时,连接立即失败

mysqli connection string -> mysqli_connect($HOST, $USER, $PASSWORD, $DB); 
PDO Connection string -> new PDO("mysql:host=$HOST;dbname=$DB", $USER, $PASSWORD);

它抛出的具体错误是,

SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'localhost' (10061

你们能帮帮我吗?谢谢。

4

1 回答 1

5

我不时遇到这种情况。最常见的解释是 MySQL 服务器被配置为在一个路径上使用套接字文件,但是php.ini关于 mysqli 或 pdo_mysql 的部分正在寻找另一个路径上的套接字文件。

即使我从 MacPorts 安装了 PHP 和 MySQL,也会发生这种情况。您会认为他们已经使这两个端口的配置一致。

编辑您php.ini的设置以设置套接字文件的正确位置,或者在启动与 mysqli 或 pdo_mysql 的连接时指定套接字。

pdo = new PDO("mysql:dbname=test;unix_socket=/opt/local/var/run/mysql5/mysqld.sock", 
  "username", "password")

$mysqli = new mysqli("localhost", "username", "password", "test",
  ini_get("mysqli.default_port"), "/opt/local/var/run/mysql5/mysqld.sock")

另请参阅我写的文章Error2003-CantConnectToMySQLServer

于 2010-01-08T01:12:10.770 回答