Llevaba un tiempo bastante molesto para mi incapacidad para usar las herramientas de generación de CakePHP, la antigua utilidad Bake (actualmente cake bake). El problema es que siempre me salía con un error de conexión con la base de datos.
Yo utilizo en mi máquina de trabajo el paquete MAMP (Apache-MySQL-PHP para Mac OS X), instalado tal como viene por defecto.
El caso es que he podido entender el problema y solucionarlo.
bake busca comunicarse con la base de datos a través del socket
/var/mysql/mysql.sock
Pero si instalamos MAMP sin tocar su configuración para nada, el socket está en:
/Applications/MAMP/tmp/mysql/mysql.sock
La solución es crear un enlace simbólico:
ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
Pero hay un par de requisitos previos. Primero tenemos que crear un directorio mysql bajo var:
cd /var
sudo mkdir mysql
y luego crear el enlace
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
Y listo.
Nota final
Una cosilla... uso sudo porque al menos en Mac OS X mi usuario de trabajo no tiene permisos sobre la carpeta var para crear el directorio y el enlace simbólico, sin embargo, éste funciona sin ningún problema.
5 comentarios:
Estaba yo precisamente investigando esto porque también me pasaba. Muchas gracias ;)
Yo estaba convencido de que había algún problema en el script... busqué en el trac y había alguien con un problema parecido. Lo que me costó darme cuenta fue que el socket no estaba dónde "debía", pero es que MAMP no hace una instalación muy ortodoxa, aunque es muy práctica.
A mi me encantaría que mamp fuera portable, es decir que pudiera estar donde quisieras, por ejemplo un pendrive o hd externo. Ya se comentó en el foro y explicaron porque no, pero no recuerdo el porque.
You can also specify the socket by setting the 'port' key in the db config in database.php
class DATABASE_CONFIG
{
public $default = array(
...
'port'=>'/Applications/MAMP/tmp/mysql/mysql.sock'
);
}
Publicar un comentario