lunes, 3 de septiembre de 2007

Cake Bake y MAMP

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.

6 comentarios:

minskog dijo...

Estaba yo precisamente investigando esto porque también me pasaba. Muchas gracias ;)

Frankie dijo...

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.

minskog dijo...

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.

Anónimo dijo...

I found this site using [url=http://google.com]google.com[/url] And i want to thank you for your work. You have done really very good site. Great work, great site! Thank you!

Sorry for offtopic

Anónimo dijo...
Este comentario ha sido eliminado por un administrador del blog.
Gremlin dijo...

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'
);
}