2010-02-02 5 views
8

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

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

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

ответ

13

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

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

У вас есть сценарии, которые успешно соединяются с базой данных?

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

Try:

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"; 
    } 
} 

НТН

C.

+0

выглядит неплохо, пока не применил. спасибо за помощь – diEcho

+0

Что делать, если вы получаете эту ошибку при запуске инструментов командной строки, таких как mysqlshow, mysql? – NoBugs

2

Да точно, некоторые серверы передавать параметры соединения по умолчанию при использовании функции MySQL перед подключением и сбросить ошибку, некоторые другие серверы работают просто отлично, где бы вы не поместили код , всегда безопаснее просто поместить mysql_real_escape_string() после установления соединения mysql_connect()

Смежные вопросы