2010-10-19 4 views
13

Ich hatte eine CakePHP-App auf meinem lokalen Rechner (Mac OSX) für eine Weile und dann plötzlich Mir ist klar, dass ich keine Verbindung zu mysql.sock herstellen kann.CakePHP: Keine solche Datei oder Verzeichnis (versucht, über Unix zu verbinden: ///var/mysql/mysql.sock)

Ich erhalte diese Fehlermeldung:

Warning (2): mysql_connect() [http://php.net/function.mysql-connect]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php, line 540] 

Die Linie 540 von dbo_mysql.php lautet:

$this->connection = mysql_connect($config['host'] . ':' . $config['port'], $config['login'], $config['password'], true); 

ich eingecheckt haben, gibt es keine fle // var/mysql/mysql .Socke. Es ist tatsächlich in /tmp/mysql.sock

Ich habe versucht, meine php.ini.default zu ändern, um die oben genannten, aber es ist bereits eingestellt, in/tmp/für lokale Verbindungen suchen. Warum und woher kommt der Fehler?

Ist jemand auf einen ähnlichen Fehler gestoßen?

Danke,

Jonesy

+7

Try '127.0.0.1' statt' localhost' –

+0

Woher? auf die App zugreifen? in der Datei php.ini? – iamjonesy

+6

'$ config ['host'] = '127.0.0.1''. Wenn Sie 'localhost' verwenden, verwendet mysql standardmäßig lokale Unix-Domain-Sockets. Wenn Sie zur IP-Adresse wechseln, müssen Sie stattdessen TCP-Sockets verwenden. –

Antwort

12

versuchen, einen absoluten Pfad der die mysql.sock Datei in der APP/config/database.php

<?php 
    class DATABASE_CONFIG { 
     var $default = array(
      'driver' => 'mysql', 
      'persistent' => false, 
      'host' => 'localhost', 
      'login' => 'dbUser', 
      'password' => 'dbPassword', 
      'database' => 'dbName', 
      'prefix' => '', 
      'port' => '/path/to/mysql.sock' 
     ); 
    } 

über ein IP Dies ist vorbei besser als Laufen für die lokale Verbindung als die Socket-Verbindung ist viel, viel schneller.

+0

Das Übergeben des Ports von Config funktioniert! –

+1

Dies funktioniert in CakePHP bis Version 1.3. Für Version 2.0 und oben, siehe Kent Widmans Antwort unten. –

+0

Macht Sinn, wenn man bedenkt, dass die Antwort an diesem Punkt fast 2 Jahre alt ist. –

6

In phpcake 2.0 Verwendung 'unix_socket' anstelle von Port

<?php 
    class DATABASE_CONFIG { 
     var $default = array(
      'datasource' => 'Database/Mysql', 
      'persistent' => false, 
      'host' => 'localhost', 
      'login' => 'dbUser', 
      'password' => 'dbPassword', 
      'database' => 'dbName', 
      'prefix' => '', 
      'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', //Path for mac XAMPP 
     ); 
    } 
12

Wenn Sie Problem mit CakePHP 2.0 haben, versuchen Sie dies:

sudo mkdir /var/mysql 
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock 
+2

Gut für Mac mit MAMP – Pandaski

+0

Das funktionierte für mich - danke – OneSneakyMofo

+0

Funktioniert auch für CakePHP 1.3 und für Xampp mit 'sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock/var/mysql/mysql. Socke –

Verwandte Themen