我遇到了一个奇怪的情况。当我尝试使用“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
你们能帮帮我吗?谢谢。
最佳答案
我时常遇到这种情况。最常见的解释是 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 .
关于php - 使用 mysqli 或 PDO 时无法通过 PHP 脚本连接到 MySQL 但 mysql 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024719/