Не может соединиться с локальным сервером MySQL через сокет

Я получаю следующую ошибку на своем сайте, когда я загружаю его или отправляю страницу:

mysql_real_escape_string () [function.mysql-real-escape-string]: не Может соединиться с локальным сервером MySQL через сокет '/var/lib/mysql/mysql.sock' (2)

Что в мире это означает?

8
задан random 4 July 2011 в 04:22
поделиться

1 ответ

Поскольку ошибка бросается вызовом mysql_real_escape_string(), это скорее означает, что вы не вызывали mysql_connect() сначала и не передали действительный хэндл db в mysql_real_escape_string (или вызов mysql_connect() завершился неудачно).

В некоторых случаях расширение mysql будет пытаться автоматически соединиться, используя настройки по умолчанию в php.ini, но если они недоступны, то в случае их отсутствия, они явно недействительны. Или может быть, что настройки действительны, но mysqld не запущен.

Есть ли у вас скрипты, которые успешно подключаются к базе данных?

Есть ли у вас имя пользователя и пароль к базе данных?

Попробуйте:

check_running();

$user=''; // fill in your details
$password=''; // fill in your details

$hosts=array(
  'localhost', '127.0.0.1', $_SERVER['HTTP_HOST'], $_SERVER['SERVER_ADDR']
);
foreach ($hosts as $addr) {
   try_con($addr, $user, $password);
   try_con($addr . ':3306', $user, $password);
}

function try_con($host, $user, $password)
{
 $dbh=mysql_connect($host, $user, $password);
 if ($dbh) {
     print "Connected OK with $host, $user, $password<br />\n";
 } else {
     print "Failed with $host, $user, $password<br />\n";
 }
}

function check_running()
{
   // this assumes that you are using Apache on a Unix/Linux box
   $chk=`ps -ef | grep httpd | grep -v grep`;
   if ($chk) {
      print "Checking for mysqld process: " . `ps -ef | grep mysqld | grep -v grep` . "<br />\n";
   } else {
       print "Cannot check mysqld process<br />\n";
   }
 }

HTH

C.

13
ответ дан 5 December 2019 в 11:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: