【发布时间】:2016-09-30 12:37:34
【问题描述】:
我在我的 Mac OS 10.11.3 上使用 MAMP 5.5.42 和 PHP 5.6.7。代码sn-p如下:
try{
$db = new PDO('mysql:host=localhost:8889;dbname=lacolshow_database;charset=utf8', 'root', 'root');
}
catch (PDOException $e) {
var_dump($e->getMessage());
}
上面的代码没有引发异常,但会产生一个空的 PDO 对象。
如果在上面的代码中 localhost:8889 被 localhost 替换,则会引发异常并显示消息
SQLSTATE[HY000] [2002] No such file or directory.
如果在上面的代码中localhost:8889 被127.0.0.1 替换,则会引发异常并显示消息
SQLSTATE[HY000] [2002] Connection refused.
任何帮助表示赞赏。
更新:如果我使用 mysqli 而不是 PDO,则连接有效:
$mysqli=mysqli_connect('localhost', 'root', 'root', 'lacolshow_database', NULL, '/Applications/MAMP/tmp/mysql/mysql.sock');
按照http://php.net/manual/en/pdo.construct.php 的第二条评论中给出的建议,我尝试了以下方法:
$dsn = 'mysql:dbname=lacolshow_database;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock';
$db = new PDO($dsn,'root', 'root');
但这也失败了,产生了一个空的 PDO 对象。
【问题讨论】: