2010-03-26 11 views
18

He estado probando algunas secuencias de comandos de migración para CakePHP, pero tuve problemas con todas ellas de una forma u otra.Good DB Migrations for CakePHP?

Por favor, avísenme sobre una opción de migración para Cake que utiliza en vivo y que funciona.

me gustaría los siguientes "características":

  • Soporte CakePHP 1.2 (por ejemplo CakeDCs migraciones sólo será una opción cuando 1.3 es estable y mi aplicación emigraron al nuevo código base)
  • Soporte para (o al menos no detenerse) Modelos con una configuración de base de datos diferente.
  • apoyar los modelos en las subcarpetas de app/models
  • apoyar los modelos de plugins
  • mesas de apoyo que no se ajustan a las convenciones de la torta (tengo un par de mesas especiales que no tienen un único campo de clave principal y la necesidad para mantenerlos)
  • Funciona bien con la implementación automatizada a través de Capistrano y Git.

No necesito archivos versionados al estilo de los rieles, un archivo de esquema versionado por git que se compara en vivo con el esquema existente funcionará. Es decir: me gusta el SchemaShell en Cake, aparte de que no es compatible con la mayoría de mis requisitos anteriores.

He examinado y probado:

+0

+1, pregunta interesante –

+0

Ignorando la documentación y leyendo la fuente, he descubierto cómo hacer que Schema Shell haga prácticamente todo lo que necesito. Descubrí que -f no "fuerza" a generar "para crear un nuevo esquema". Se usa "Forzar la generación de todas las tablas en el esquema ...". Pero no solo eso, y esto no está en los documentos: también se puede usar para obligar a la actualización a ignorar las clases de modelo de la misma manera que a generar y, por lo tanto, actualizar un esquema generado con la opción. –

+0

@Matin Westin: ¿por qué no aportar esas ideas a la wiki de documentación? – stevenf

Respuesta

2

tengo un plugin que acceda a CakePHP 1.2, usted puede ver en http://github.com/jrbasso/migrations

Utiliza el estilo de pastel para hacer todas las cosas. No usa yaml, usa objetos para definir tablas. Puede importar modelos desde Cake sin problemas ...

+0

Genial, voy a echar un vistazo. –

4

Trataré de actualizar este "tema" con mis hallazgos después de probar rápidamente el complemento de Juan y todos los demás mencionados excepto el de CakeDC ... ya que no lo hago t tiene la aplicación relevante actualizada para CakePHP 1.3 y ese plugin de migración requiere 1.3

Debo notar que los comentarios sobre fallas y complementos que no funcionan para mí deben leerse principalmente como "no adecuados para MIS necesidades" o "errores que he cometido" al intentarlos ". Hasta cierto punto, algunos podrían leer tales comentarios como una petición de revisión en la documentación. No insinúo que los complementos probados son intrínsecamente defectuosos, defectuosos o rotos. Estoy seguro de que todos ellos trabajan en las circunstancias correctas y para los flujos de trabajo correctos.

CakePHP esquema Shell

  • tiene el concepto simple que me gusta. El esquema está vinculado al código y el SCM utilizado para gestionar sus revisiones.

  • Funciona muy bien a un punto.Ese punto es:

  • No aparece adecuado para la implementación automatizada. Es decir. El comando de actualización solo puede modificar tablas, no manejar tablas nuevas o eliminadas. Esos son manejados por sus propios comandos de shell haciendo complicada la implementación del estilo Cap. También ejecutar actualizaciones con una nueva tabla producirá errores cuando la secuencia de comandos intente "alterar" la tabla no existente. Estoy seguro de que si esto es intencionado o un problema que estoy teniendo. (He pedido en el grupo de Google sin respuesta aún)

migraciones CakeDC

  • sonido como tomaron el Shell de esquema y "fija" la misma. Los documentos explican un procedimiento un poco más complicado (al menos para explicarlo) pero podría funcionar como yo quisiera.

YAML, joelmoss y las migraciones de juan

  • Estos comparten el concepto de carriles de ficheros versionados y "Upping" y "derribo" entre ellos. Me gusta menos ya que no puedo ver una situación para mis proyectos cuando la migración de un esquema se actualizaría o retrotraería sin hacer lo mismo con el código fuente. También puedo vivir sin la capacidad de migrar datos existentes en un script de migración, ya que lo preveo como algo muy raro para mí.

  • Estos todos esperan que yo no toco la base de datos a través de cualquier medio distinto de scripts de migración. No puedo abrir mi MySql-GUI favorita y jugar hasta que esté contento y luego generar un "diff" a través de estos scripts. (Al menos no he encontrado formas documentadas de hacerlo durante mis breves pruebas). Tengo que escribir manualmente los cambios en los archivos YAML o php. Como estoy empezando en un proyecto existente con alrededor de 30 tablas, no me agrada la idea de volver a escribir ese esquema manualmente. Pero algunos de estos complementos no crearon un buen archivo de punto de partida con todas mis tablas. Probablemente esto también se debió a mis breves pruebas y/o incapacidad para encontrar documentación para tal característica. No profundicé en el código fuente de la mayoría de estos.

Mi siguiente paso parece ser la actualización de mi proyecto de CakePHP 1.3 y dar el último plug-in de un intento. Pero no sé cuándo tendré tiempo para eso. (Es decir, no cualquier persona contener la respiración)

Si cree que he entendido mal la forma en cualquiera de estos plugins funcionan y pueden ofrecer éxitos en cuanto a cómo hacer que funcionen para mí. Estaría feliz por la respuesta de un comentario.

3

Si te gusta Rieles migraciones, utilice Rieles migraciones ... echar un vistazo a esta joya https://github.com/thuss/standalone-migrations. Uso esta gema con cakephp en mi trabajo diario.

+0

Soy fan de Ruby. Ahora tiene que lidiar con proyectos de PHP. Espero que Rails Migrations facilite un poco mi trabajo :) –

1

He utilizado el CakeDC migrations plugin para 1.3.xy 2.x en entornos de producción y han sido satisfechos. Hay algunos errores relacionados con la creación de migraciones en la versión 1.3.x, pero son fáciles de corregir.

0

Utilice el plug-in 3.x Migrations aquí.

Todos los problemas que tienen las otras herramientas antiguas están solucionados por el diseño. Y está en desarrollo pesado y obtiene más funciones y correcciones cada semana.

También puede usar fácilmente la nueva herramienta para las aplicaciones 1.x y 2.x existentes. Acabo de publicar una publicación en how to use 3.x Migrations in 2.x apps por cierto.