2012-10-02 24 views
5

Estoy usando grails 2.0.3, plugin de migración de base de datos (plugin 1.1) y postgres 9.1.Liquibase: la relación "databasechangeloglock" ya existe, usando el plugin de grises y el esquema no predeterminado

estoy viendo lo que creo que es el mismo problema descrito por estos otros usuarios, pero con arrugas:

Las arrugas son que:

  1. Estoy usando grails y el plugin de migración de base de datos.
  2. La base de datos de producción no utiliza el esquema predeterminado.
  3. I debe utilizar la migración automática de la base de datos al inicio (grails.plugin.databasemigration.updateOnStart = true), porque ningún desarrollador tiene acceso a la base de datos de producción real.

Mi comprensión del problema es que liquibase está verificando el esquema predeterminado para la existencia de sus tablas de mantenimiento, y luego intenta crear las tablas en el lugar correcto, el esquema no predeterminado. Pero, por supuesto, ya existen después de la primera ejecución. Parece que hay una solución al especificar una opción de línea de comandos, pero no tengo esa opción debido a la necesidad de ejecutar de forma automática, dentro de la aplicación de Grails tal como se implementó.

¿Hay alguna manera de que el complemento de migración de la base de datos haga lo que necesito? Indicar a los DBA que organicen los esquemas de manera diferente no es una opción.

Gracias de antemano, Ray A. Conner

Respuesta

3

Condiciones previas y órdenes de refactorización toman un atributo schemaName.

<tableExists schemaName="myschema" tableName="..."/> 
<createTable schemaName="myschema" tableName="..."/> 

También puede parametrizar que:

<databaseChangeLog ..> 
    <property name="schema.name" value="myschema"/> 
    .... 
    <changeset ...> 
    <createTable schemaName="${schema.name]" tableName="..."/> 
    </changeset> 
</databaseChangeLog> 

por sí mismo Liquibase, puede establecer defaultSchemaName, en su caso (Grails) esto debería ser:

grails.plugin.databasemigration.updateOnStartDefaultSchema 
+0

Eso es para refactorización tablas en el esquema de mi aplicación. Este problema es con las tablas que liquibase crea para sí mismo, para contener los conjuntos de cambios y para el bloqueo interno. –

+0

Agregó su caso también. –

+1

Dejé el trabajo donde esto era un problema, y ​​aún no he podido configurar un entorno para verificar su edición. Espero que antes de mucho tiempo pueda hacerlo. –

Cuestiones relacionadas