2010-10-19 9 views
13

He tenido una aplicación cakephp funcionando bien en mi máquina local (mac osx) por un tiempo y luego repentinamente Me doy cuenta de que no puedo conectarme a mysql.sock.CakePHP: Ningún archivo o directorio (tratando de conectarse a través de unix: ///var/mysql/mysql.sock)

estoy recibiendo este error:

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] 

La línea 540 de dbo_mysql.php lee:

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

He comprobado, no hay fle // var/MySQL/MySQL .calcetín. En realidad está en /tmp/mysql.sock

He intentado cambiar mi php.ini.default para que coincida con el anterior, pero ya está configurado para buscar en/tmp/para las conexiones locales. ¿Por qué y de dónde viene el error?

¿Alguien ha encontrado un error similar?

Gracias,

Jonesy

+7

Try '127.0.0.1' en lugar de' localhost' –

+0

¿Qué tal? accediendo a la aplicación? en el archivo php.ini? – iamjonesy

+6

'$ config ['host'] = '127.0.0.1''. mysql usa por defecto los sockets de dominio local de Unix si usa 'localhost'. El cambio a IP lo obliga a usar sockets TCP en su lugar. –

Respuesta

12

Trate de pasar una ruta absoluta del archivo de mysql.sock en el 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' 
     ); 
    } 

Esto es mejor que correr a través de una ip para la conexión local ya que la conexión del socket es mucho, mucho más rápida.

+0

Pasar el puerto desde la configuración funciona! –

+1

Esto funciona en CakePHP hasta la versión 1.3. Para la versión 2.0 y arriba, vea la respuesta de Kent Widman a continuación. –

+0

Tiene sentido teniendo en cuenta que la respuesta tiene casi 2 años en este momento. –

6

En phpcake 2.0 uso 'unix_socket' en lugar del puerto

<?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

Si está teniendo problemas con CakePHP 2.0, intente esto:

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

Bueno para Mac con MAMP – Pandaski

+0

Esto funcionó para mí - gracias – OneSneakyMofo

+0

Funciona también para CakePHP 1.3 y para Xampp con 'sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock/var/mysql/mysql. calcetín –

Cuestiones relacionadas