使用PHP/PDO连接MySQL时出错

33 php mysql pdo

昨天我的代码工作正常,今天它突然只是不想连接到我的数据库.我没有更改它或代码上的设置,我也没有更新任何软件.我所做的就是:

__CODE__

我收到一条很好的异常消息说:

__CODE__

问题是:我显然没有尝试使用unix socket连接,而是使用TCP/IP.我究竟做错了什么?这里有什么我想念的吗?

谢谢你的帮助.

joh*_*nes 87

您正在使用Unix套接字.当读取"localhost"时,MySQL客户端库不会将其解释为TCP主机"localhost"并解析该名称,但使用默认的Socket位置.要在本地计算机上使用TCP,必须将其127.0.0.1用作主机名.

指定过去的使用unix_socket而不是hostDSN.用于插座的位置localhost可以在编译时或在使用PHP的一些版本中定义pdo_mysql.default_socketphp.ini.


Ili*_*dia 9

从使用PDO连接到MySQL的PHP​​文档:PDO_MYSQL DNS

最后的说明说:

仅限Unix:

当主机名设置为"localhost"时,通过域套接字与服务器建立连接.如果PDO_MYSQL是针对libmysql编译的,那么套接字文件的位置是在libmysql的编译位置.如果针对mysqlnd编译PDO_MYSQL,则可以通过pdo_mysql.default_socket设置设置默认套接字.

所以为了解决这个问题,你必须在php.ini中正确配置mysql.sock的位置

  1. 找到你的mysql.sock文件.常见地点:

    • /tmp/mysql.sock
    • /tmp/mysql/mysql.sock
    • /var/mysql/mysql.sock
    • 或者如果您使用MAMP或LAMP在mysmp的tmp文件夹中查找
  2. 编辑php.ini文件并正确设置pdo_mysql.default_socket的值

  3. 重新启动Apache服务器以获取php.ini文件中的更改