Frage

Heute habe ich entfernt und neu installierte die neueste Version von lampp zu bewegen, um 5.30 zu PHP, und plötzlich eine sehr einfache Anwendung, versagt in der MySQL-Datenbank zu verbinden. Ich bin mit PDO zu verbinden, und Empfangen von den folgenden Fehlern:

Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
via unix://) in /home/raistlin/www/todoapp/home.php on line 9

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0
/home/raistlin/www/todoapp/home.php(9): PDO->__construct('mysql:host=loca...', 'USER', 
'PASSWORD') #1 {main} thrown in /home/raistlin/www/todoapp/home.php on line 9

Ich bin nicht den Fehler zur Zeit zu kontrollieren, im Interesse es debuggen.

Der folgende Code ist genug, um das Problem auf meinem System zu replizieren:

<?php
$DBACCESS = array(
    "connstring"=>"mysql:host=localhost;dbname=todoapp",
    "host"=>"localhost",
    "user"=>"user",
    "password"=>"password",
    "todoapp"=>"todoapp"
    );

    echo implode('<br \>',$DBACCESS);

    $dbh = new PDO($DBACCESS['connstring'],$DBACCESS['user'],$DBACCESS['password']);

    $dbh = null;
?>

Online-Suche, ich habe einen oder zwei andere Menschen mit dem gleichen Problem gefunden, aber keiner von ihnen hat eine Antwort erhalten, viel weniger eine Arbeit ein. Wer weiß, was passiert ist? Gibt es etwas, das ich in der Konfiguration verpasst? Was muss ich tun, um es zu beheben?

War es hilfreich?

Lösung

In der Regel bedeutet, dass Sie TCP / IP (1), oder sagen, MySQL, wo Ihr Unix-Socket (2) angeben müssen:

  1. "mysql: host = 127.0.0.1" oder "mysql: host = localhost; port = 3306"
  2. "mysql: unix_socket = / var / run / mysqld / mysqld.sock"

Andere Tipps

Sie können auch 127.0.0.1 verwenden, statt „localhost“, in der db-Verbindungszeichenfolge Angabe dieses Problem ganz zu vermeiden.

Sie möchten vielleicht php.ini ändern, so PDO mysql.sock durch Angabe der pdo_mysql.default_socket = /opt/lampp/var/mysql/mysql.sock (im Fall von Xampp) finden kann. Vergessen Sie nicht, Apache nach dem Ändern der php.ini neu zu starten.

(Leider scheint dies eine wiederholte Lösung zu sein).

Ich bin mit MAMP 2.0.1 und Symfony 1.4 mit Lehre für dieses Projekt.

Dritte Option war für mich mit einer kleinen Änderung: in /config/databases.yml

dsn: 'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=MY_DB_NAME;'

Die häufigste Ursache für einen Fehler, wie dies wäre, dass MySQL nicht ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top