2016-04-12 20 views
1

Unsere Schule lässt uns eine kleine Datenbank verklagen, auf die ich über das Schulnetzwerk zugreifen möchte. mitPDO kann keine Verbindung zur Datenbank herstellen

mysql -D ddddd -h hhhh -u uuuu 

funktioniert Anschluss (Beachten Sie, dass im Gegensatz zu mehreren Fragen auf dieser Seite, hhhh ist nicht localhost). Jedoch mit

new PDO('mysql:host=hhhh;dbname=dddd, uuuu, pppp) 

nicht, und einen Fehler bringt:

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock'' 

Wie finde ich diese Buchse? (NB: Falls es relevant ist, laufen die Schulcomputer auf FreeBSD und ich habe nur sehr begrenzte Berechtigungen).

+0

Kann dies helfen Ihnen: - [link] (http://stackoverflow.com/questions/22436028/cant-connect-to-local- mysql-server-durch-socket-tmp-mysql-sock-2) [link] (http://stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var- mysql-mysql-sock-38) [link] (https://teamtreehouse.com/community/cant-connect-to-local-mysql-server-through-socket) –

Antwort

1

der Fehler:

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock'' 

bedeutet, daß das PDO versucht, MySQL über lokale Socket zu verbinden (Linux Socket-Datei).

Aber meine Vermutung ist, dass Sie über Hostname/IP verbinden möchten. Dein Code muss falsch sein. Aus dem Beispiel sieht es so aus, als ob Sie PHP verwenden. Probieren Sie alles doppelt. Hier

ist ein Beispiel von php.net:

<?php 
/* Connect to an ODBC database using driver invocation */ 
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

try { 
    $dbh = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

?> 
+0

Vielen Dank. Ich hatte das Beispiel von php.net gesehen. Was mich nervt ist, dass dieses Beispiel speziell 127.0.0.1 verwendet. Funktioniert Host = ... wirklich mit einem Hostnamen? Oder sollte ich mysql.sock finden und etwas wie unix-socket = ... verwenden? – skysurf3000

+0

php PDO libraby sollte definitiv mit Hostnamen arbeiten, es muss irgendwo ein Fehler sein, können Sie Ihren Code irgendwo pastebin.com posten? (Passwörter vor dem Posten löschen) – calvix

+0

So bin ich nicht genau sicher, was das Problem verursacht hat, aber ich denke, es war, weil ich dbname = ... vor host = ... Wie auch immer, jetzt funktioniert es. Vielen Dank! – skysurf3000

0

Verwenden Sie die korrekte IP-Adresse, um eine Verbindung herzustellen.

Wenn Sie localhost verwenden, wird Socket standardmäßig unter Linux verwendet. Verwenden Sie 127.0.0.1 als Host anstelle von localhost.

Verwandte Themen