Я столкнулся с странной ситуацией. Когда я пытаюсь подключиться к базе данных 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 Server настроен на использование файла сокета по одному пути, но раздел php.ini
на mysqli или pdo_mysql ищет файл сокета по другому пути.
Это происходит со мной, хотя я устанавливаю PHP и MySQL из MacPorts. Вы могли бы подумать, что они согласились бы с конфигурациями для этих двух портов.
Либо отредактируйте свой 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 .