Archive for September, 2009

cakephp - migrate - instalacion y funcionamiento

Wednesday, September 30th, 2009

bueno, cuando trabajamos en un proyecto en equipo con otros colegas, usando algun control de versiones como Git o SVN, nos encontramos con situaciones que modificamos varias veces las bases de datos de nuestro proyecto, entonces necesitamos una manera de “controlar la version” de nuestra base de datos y de esa manera contar todos los integrantes del equipo con la base actualzada.

Cakephp ofrece para ello un proceso que se ejecuta en consola llamado Migrate.

cd cake/console && ./cake migrate

en la primera vez que lo usemos, puede que nos salga un error Pear como el siguiente:

__  __  _  _  __     ___     __   __   __  ___    __  _  _  __
|   |__| |_/  |__    | | | | | _  |__| |__|  |  | |  | |\ | |__
|__ |  | | \_ |__    | | | | |__| | \_ |  |  |  | |__| | \|  __|

App : app
Path: /var/www/nombre_proyecto/app

   ** Unable to include PEAR.php and MDB2.php
es porque necesitamos instalar la libreria MDB2 de pear para mysql y lo haremos con el siguiente comando:

sudo /usr/bin/pear install MDB2_Driver_mysql

con este comando en algunos casos tendremos solucionado el problema y podremos ejecutar: ./cake migarte y tener actualizada la base de datos, si es asi, joya!

Sino, puede que nos salga el siguiente error:

Fatal error: Class ‘Yaml’ not found in /var/www/nombre_proyecto/vendors/shells/migrate.php on line 693

esto se debe a que cake no nos esta tomando bien los Imports de los Vendors, a mi me sucede a menudo hasta dentro de los controladores en cake… es un error muy comun.

la manera mas simple de solucionarlo que encontre fue hacer lo siguiente, abrir el script migrate del error y comentar la llamada al Import y sustituirla por un include convencional php:

include(’/var/www/nombre_proyecto/vendors/Yaml.php’);
//App::import(’Vendor’, ‘Yaml’);

con esto ya podemos mantener versionada la base de datos de nuestro proyecto para todos los integrantes del equipo.

habitamos
PageRank for this page