簡體   English   中英

無法通過套接字連接到本地 MySQL 服務器

[英]Can't connect to local MySQL server through socket

當我上傳或提交頁面時,我的網站出現以下錯誤:

mysql_real_escape_string() [function.mysql-real-escape-string]: 無法通過socket '/var/lib/mysql/mysql.sock' 連接到本地MySQL服務器(2)

這到底是什么意思?

由於錯誤是由調用mysql_real_escape_string()引發的,這意味着您沒有先調用mysql_connect()並將有效的數據庫句柄傳遞給mysql_real_escape_string (或調用mysql_connect()失敗)。

在某些情況下,mysql 擴展將嘗試使用 php.ini 中的默認設置自動連接,如果這些設置不可用,則故障轉移到 my.cnf - 這顯然是無效的。 或者可能是設置有效但 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";
   }
 }

是的,有些服務器在連接之前使用 mysql 函數時傳遞默認連接參數並拋出錯誤,其他一些服務器在您放置代碼的任何地方都可以正常工作,在建立 mysql_connect() 連接后放置 mysql_real_escape_string() 總是更安全

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM