mysql - 无法通过套接字连接到本地MySQL服务器

标签 mysql sockets

当我上传或提交页面时,我的网站出现以下错误:

mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (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服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182919/

相关文章:

php - 如何将数据库数据发送到html电子邮件

mysql - 在 MySQL 9.0 的存储过程/例程中定义用户变量

mysql - 如何将此触发器转换为我的 sql,这仅适用于 ms sql

c - 在进程退出时释放绑定(bind)端口

c# - 套接字无法正常工作,因为它应该有帮助!

c - 在用户定义的telnet服务器中如何获取客户端提供的telnet选项

networking - Twisted Python、Ruby 的 Eventmachine、Java 的 NIO 等的 Lua 等价物是什么?

mysql - 从列范围内的表中获取结果集?

java - Hibernate 存储过程调用在多次调用时挂起

iphone - .Net Apple 推送通知服务提供商?