Ошибка «getaddrinfo failed ...» при доступе к MySQL (5.5.17) из PHP (5.3.6-8) - PullRequest
1 голос
/ 04 ноября 2011

Я абсолютный новичок, и при попытке подключиться к моей первой настоящей базе данных MySQL способом, который используется в большинстве учебных пособий:

$connect = mysql_connect("localhost","user","pass")

Я получил следующую ошибку:

php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

Я искал в интернете, но люди, похоже, сталкивались с этой проблемой только при попытке доступа к содержимому удаленного файла с помощью fopen () или чего-то подобного. Я нашел их решения неприменимыми здесь. Я предполагаю, что это как-то связано с неправильной конфигурацией?

Для контекста я использую OS X и установил MySQL из официального установщика пакетов. Я использовал версию PHP для OS X (5.3.6), но в отчаянии я установил пакет из http://php -osx.liip.ch / . Это не помогло, но сообщение об ошибке было отформатировано намного лучше!

РЕДАКТИРОВАТЬ: У меня есть обходное решение, но из-за того, что я новый пользователь, я не могу опубликовать его в течение 8 часов. Выложу как только смогу. Спасибо!

Ответы [ 4 ]

2 голосов
/ 05 ноября 2011

Я нашел решение, но я не совсем понимаю, почему оно работает. Надеюсь, это поможет кому-то, хотя:

Сначала я должен был отредактировать php.ini, чтобы изменить место, где он ищет файл носителей MySQL ("/var/mysql/mysql.sock"), туда, где его фактически установил установщик пакета OS X ("/ tmp / mysql. носок"). Это не сработало, но все равно, наверное, было хорошо.

Затем, вместо подключения к MySQL через "localhost", я попытался подключиться напрямую к этому файлу sock. Как:

$connect = mysql_connect(":tmp/mysql.sock","username","pass")

"localhost" подразумевается в приведенном выше примере. Это сработало! Я не знаю почему, и, похоже, мне не нужно указывать файл sock каждый раз, когда я хочу подключиться, но он работает.

ОБНОВЛЕНИЕ: После перезапуска всего (Apache, mysqld, сам компьютер) мне больше не нужно указывать файл sock. Я могу просто использовать "localhost". Я предполагаю, что это означает, что проблема была именно в этой строке в php.ini, но кажется, что это сообщение об ошибке должно быть более распространенным, если бы это было так, поскольку многие люди из OS X используют этот установщик пакета MySQL. В любом случае, надеюсь, это поможет.

0 голосов
/ 26 февраля 2016

У меня была такая же ошибка, когда я неправильно набрал слово 'localhost' здесь:

$db = mysqli_connect('localhost','root',' ', 'mydb');
0 голосов
/ 20 апреля 2012

Я тоже столкнулся с этой проблемой. Я обнаружил, что у меня есть косая черта на localhost, которая предположительно PHP интерпретирует как адрес сокета.

$db = mysql_connect('localhost/', 'user', 'pass'); //bad
$db = mysql_connect('localhost', 'user', 'pass'); //good :)
0 голосов
/ 04 ноября 2011

Используйте только фрагмент ниже и обновите ваш пост с результатами.Ошибка, которую вы получаете, кажется странной и не должна происходить только при подключении к MySQL.

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...