php - 使用 mysqli 或 PDO 时无法通过 PHP 脚本连接到 MySQL 但 mysql 可以工作

标签 php mysql pdo mysqli mysql-error-2003

我遇到了一个奇怪的情况。当我尝试使用“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/

相关文章:

php - 我是否应该为登录用户设置很多 SESSION 变量?

php - 准备声明问题发送加密信息

mysql - 在一种方法中在 hibernate session 中完成的更改对于使用同一 session 中的条件的选择查询来说是不可见的

php - 我怎样才能以更快的方式做到这一点?

php - 在 zf2 中调用存储过程时发生 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 错误

php - 无法通过bizstrap表单使用php将数据提交到mysql数据库

php - 正则表达式/PHP 删除第一个字母之前的所有内容

mysql - 我使用 CASE 语句的查询有什么问题

php - 解决 PHP PDO 错误 : SQLSTATE[42000] [1044]

mysql - 尝试组合和/或 MySQL 查询的参数