2011-08-02 22 views
7

He leído acerca de cómo puede generar changelog.xml a partir de un esquema existente. Está bien, pero tengo sistemas existentes que no quiero tocar, excepto para traer nuevos cambios. También tengo sistemas completamente nuevos que requieren que se apliquen todos los cambios.usando liquibase en el esquema existente

Por lo tanto, quiero que liquibase solo realice migraciones desde el conjunto de cambios X cuando se ejecuta en un sistema existente. Es decir. el DB de ese sistema está en la revisión X-1 (pero no en las tablas de liquibase sys), y no quiero que se apliquen migraciones anteriores.

Muchas gracias, Pat

Respuesta

2

creo que la más fácil sería para ejecutar la configuración inicial en una base de datos vacía al principio y exportar la entrada (s) Liquibase no insertar en la tabla DATABASECHANGELOG. Luego, exportaría estas entradas e insertarlas manualmente en una de las bases de datos de destino en su tabla DATABASECHANGELOG, por lo que liquibase no ejecuta el "cambio" allí de nuevo.

Por supuesto que había prueba todo lo relacionado con Prueba volcados en una máquina de prueba ... :)

+0

Ah, muy simple. Voy a probar eso. Gracias. – pat

+0

Eso funcionó bien Tommyd, gracias. Vale la pena señalar que si elimina el valor de suma de comprobación del script de importación, liquibase utilizará lo que está en la base de datos para calcular esto nuevamente. Lo importante es tener la entrada del registro de cambios en el DB. Buena cosa. – pat

+0

Me alegro de ser de ayuda. –

14

recomendaría un enfoque ligeramente diferente, como se ha comentado en este Liquibase forum thread

  1. generar un registro de cambios desde su esquema existente. El liquibase CLI puede hacer eso por usted. Usualmente tomo el XML resultante y lo suavizo un poco (cambios relacionados con el grupo en registros de cambios únicos, limpiezas específicas del proveedor, etc.), pero Liquibase hace la mayor parte del trabajo preliminar.

  2. ejecuta ese registro de cambios en la base de datos existente (changelogSync comando), pero solo marcándolo como aplicado (sin modificar realmente el esquema).

  3. use liquibase para aplicar nuevos cambios a partir de ese momento.

+2

El comando que se debe utilizar para el paso 2 (en Liquibase 2.x) es 'changelogSync'. –

+0

Gracias antispam y Javid. Es bueno saberlo. – pat

Cuestiones relacionadas