我正在使用以下字符串连接到localhost上的mysql数据库(我没有root访问权限)。我DID阅读Stack Overflow上的相关帖子。
我定义了这个php文件:
ini_set('mysqli.default_socket', '/tmp/mysql5.sock');
ini_set('mysql.default_socket', '/tmp/mysql5.sock');
ini_set('pdo_mysql.default_socket', '/tmp/mysql5.sock');
当我使用时:
'mysql:localhost:/tmp/mysql5.sock;dbname='.DB_NAME.';charset=utf8'
或
'mysql:unix_socket:/tmp/mysql5.sock;dbname='.DB_NAME.';'
我得到了这个
SQLSTATE [HY000] [2002]没有这样的文件或目录
当我使用时:
'mysql:host=127.0.0.1;dbname='.DB_NAME.';'
我得到了这个
SQLSTATE [HY000] [2002]拒绝连接
任何人都可以看看,非常感谢!!
答案 0 :(得分:1)
正如我在评论中提到的,我真的不知道为什么要为MySQL
连接使用套接字。另外,在您的试验中,您总是缺少用户名和密码。所以请尝试这样的事情:
$pdo = new PDO('mysql:host=localhost;dbname='.DBNAME, 'user', 'password');
答案 1 :(得分:1)
我有相同的发布并通过在主机中添加'unix_socket'来解决它,如下所示:
$host = 'localhost;unix_socket=/tmp/mysql5.sock';
所以你会有
'mysql:host=' .$host .';dbname='.DB_NAME.';'