2012-10-02 14 views
5

Sto usando grails 2.0.3, plugin di database-liquidink (liquibase) 1.1 e postgres 9.1.Liquibase: la relazione "databasechangeloglock" esiste già, usando il plugin grails e lo schema non predefinito

sto vedendo quello che penso è lo stesso problema descritto da questi altri utenti, ma con le rughe:

Le rughe sono che:

  1. Sto utilizzando Grails e il plugin per la migrazione del database.
  2. Il database di produzione non utilizza lo schema predefinito.
  3. I deve utilizzare la migrazione automatica del database all'avvio (grails.plugin.databasemigration.updateOnStart = true), poiché nessuno sviluppatore ha accesso ai database di produzione effettivi.

La mia comprensione del problema è che liquibase sta controllando lo schema predefinito per l'esistenza delle sue tabelle di manutenzione e quindi tenta di creare le tabelle nel posto giusto, lo schema non predefinito. Ma naturalmente esistono già dopo la prima esecuzione. Sembra che ci sia una soluzione alternativa specificando un'opzione della riga di comando, ma non ho questa opzione a causa del requisito di eseguire automatizzato, all'interno dell'app grails come implementato.

C'è un modo per fare in modo che il plug-in di migrazione del database faccia ciò di cui ho bisogno? Dire ai DBA di organizzare gli schemi in modo diverso non è un'opzione.

Grazie in anticipo, Ray A. Conner

risposta

3

Presupposti e comandi di refactoring prendono un attributo schemaname.

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

È inoltre possibile parametrizzare esso:

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

Per Liquibase per sé, è possibile impostare defaultSchemaName, nel tuo caso (Grails) questo dovrebbe essere:

grails.plugin.databasemigration.updateOnStartDefaultSchema 
+0

Questo è per il refactoring tabelle lo schema della mia app. Questo problema riguarda le tabelle che liquibase crea per se stesso, per contenere i changeset e per il blocco interno. –

+0

Aggiunto il tuo caso pure. –

+1

Ho lasciato il lavoro in cui si è verificato un problema e non sono ancora stato in grado di configurare un ambiente per verificare la modifica. Spero che prima di troppo potrò farlo. –

Problemi correlati