Can't connect to local MySQL server through socket

Sweetlover

Mitglied
Ich versuche seit paar Stunden ein GB zu coden, was mir allerdings bisher gut gelungen ist. Nun wollte ich eine Funktion zum Löschen der Einträge einbauen, aber dann ein MySQL Fehler: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)".

Weiß mir da jemand zu helfen?

PHP:
<?php

// Datei: admin.php
// Hier wird alles included (SQL Daten, Design, usw...)

// Als ich das eingefügt habe, kam der Fehler...
if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
// -- ENDE -- der Rest funktioniert!

if($connect_sql){
    mysql_select_db($sql_database);
    $hole_eintrag_id = "SELECT * FROM gb ORDER BY Datum DESC;";
    $ergebnis = mysql_query($hole_eintrag_id) OR die(mysql_error());
    echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
    echo"<hr color=\"".$hrcolor."\">\n";
    if(mysql_num_rows($ergebnis)){
        while($row = mysql_fetch_assoc($ergebnis)){
            echo "<table width=\"95%\" id=\"gb_maintable\">";
            echo "  <tr>";
            echo "    <td id=\"gb_datum\">";
            echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";
            echo "<b><a href=\"mailto:".$row['Email']."\">".$row['Name']."</b></a> schrieb ".$row['Datum']."<br>";
            echo "<a href=\"".$row['Homepage']."\" target=\"_blank\">Homepage</a> - ICQ: ".$row['ICQ']."<br><br>";
            echo "    </td>";
            echo "	</tr>";
            echo "	<tr>";
            echo "    <td colspan=\"2\" id=\"gb_inhalt\">";
            echo nl2br($row['Inhalt']);
            echo "	  </td>";
            echo "  </tr>";
            echo "</table><br>";
            echo "<hr color=\"".$hrcolor."\"><br>";
        }
    } else {
        echo "<p>Keine Einträge vorhanden.</p>\n";
    }
} else {
    echo "<p>Es konnte keine Verbindung aufgebaut werden.</p>";
}
?>
 
ähm ob das den fehler löst weiß ich nicht...aber ich hab noch nie in einer if schleife return; verwendet...was macht das da ? es ist ja keine funktion...
 
das return(); ist da, damit der genau dort aufhört, falls die variable $deleintrag existiert.. er soll nur einen Gb eintrag löschen und dann schreiben: "gelöscht", das wars

PS: aber auch wenn ich das return raushaue, kommt der gleiche fehler
 
naja wenn du eine var hast die $deleintrag heisst und dies mit einer if schleife überprüfst hört er eh am ende auf.. :) folgendes: bist du dir sicher das die DB verbindung hergestellt ist...wenns local is ... läuft der mysql server ?

ich habe gerade dieses gefunden ob das hilft ist fraglich:

Problem: Der mysql-Client beendet sich mit mysql:ERROR 2002: Can't connect to local MySQL-Server through socket 'var/lib/mysql/mysql.sock'. Auch eine Änderung in der /etc/my.cnf an eine andere Stelle ändert nichts. Die Änderung in der Sektion des Clients wird nicth beachtet. Erstaunlicherweise kann man als root auf Mysql zugreifen.


Lösung: Die Datei /etc/my.cnf hat die Berechtigung 600 und die Gruppe daemon.
Lösung 1: chmod 640 /etc/my.cnf und den enstprechenden Nutzer die Gruppe daemon zuordnen.
Lösung 2: chmod 644 /etc/my.cnf damit alle Nutzer des Systems auf Mysql zugreifen können.
 
also ohne die obere if abfrage läuft die mysql datenbank reibungslos

dann zeigt er mir wie gewünscht alle GB einträge



sobald ich aber löschen will (also die obere if abfrage wieder einfüge)
dann auf dieses bildchen zum löschen klicke:
PHP:
echo "<a href=\"admin.php?deleintrag=true&id=".$row['ID']."\"><img src=\"delete.gif\"></a>";

erscheint der fehler.. ich hab auch schon bei google nachgeguckt, aber nirgendwo außer das hier (was du schon geschrieben hast)...

Lösung: Die Datei /etc/my.cnf hat die Berechtigung 600 und die Gruppe daemon.
Lösung 1: chmod 640 /etc/my.cnf und den enstprechenden Nutzer die Gruppe daemon zuordnen.
Lösung 2: chmod 644 /etc/my.cnf damit alle Nutzer des Systems auf Mysql zugreifen können.

...gibt es eine Andeutung auf eine Lösung.. :((
 
-

Also bei deiner zweiten if-Anweisung wählst du vorher noch die Datenbank aus (mysql_select_db() ).

Vielleicht solltest du das schon vorher machen, dann klappt das auch mit dem ersten Query ;)
 
mysql_select_db(); hab ich nun mit einer ganz neuen abfrage gemacht

if($connect_sql){
mysql_select_db($sql_database);

HIER DER QUELLTEXT OBEN ohne mysql abfragen außer queries!

}


funktioniert immernoch nicht (wieder NUR die obere abfrage macht probleme...)
 
also ich kapiere den fehler nicht ganz.. warum ausgerechnet DIESER fehler? die abfrage oben ist doch SOOO was von simpel.. :(

es müsste doch eigentlich klappen.. :(
 
PHP:
if($deleintrag){
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
Hier hast Du noch keine DB ausgewählt! Das passiert erst, falls die zweite if-Anwesiung zutrifft.
Und es ist prinzipiell schwer, eine query auf ne unbekannte DB zu machen :)

Also einfach mysql_select_db hier hinzufügen:

PHP:
if($deleintrag){
mysql_select_db($sql_database);
$loesche_eintrag = "DELETE FROM gb WHERE ID = '".$id."'";
mysql_query($loesche_eintrag) OR die(mysql_error());
echo "gelöscht";
return;
}
dann klappt's auch mit dem Löschen :)

MfG
cyber
 
Kenne diesen Fehler:

Benenne einfach mal diese Datei um
/var/run/mysqld/mysqld.sock


$ mv /var/run/mysqld/mysql.sock /var/run/mysqld/mysql.sock~

Danach sollte er eine neue mysql.sock erstellen. Dieser fehler kann mit einem Rechteproblem mit eben dieser Datei zusammenhängen.

Ist das bei deiner lokalen LAMP konfiguration oder beim Hoster?
 

Neue Beiträge

Zurück