| 

.NET C# Java Javascript Exception

Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?

slyfox1972 - 09.08.2010 21:04
Hallo!

Wenn man in der DataSource.groovy dbCreate auf "create-drop" setzt, werden die Datenbanktabellen jedesmal neu erstellt, was in der Entwicklungsphase sinnvoll ist, wenn das DB-Modell noch nicht feststeht...

environments {
  development {
    dataSource {
      dbCreate = "create-drop" // one of 'create', 'create-drop','update'
      url = "jdbc:mysql://localhost:3306/myproject_dev"
    }
  }
  ...
}

Nun jedoch habe ich ein paar grosse Datenbank-Tabellen dabei, diese sollen nicht gelöscht und neu erstellt werden. Kann man dies irgendwie einstellen, evtl. in der DataSource.groovy oder über static-Werte in den Domain-Klassen?

Viele Grüße

Egon Schmid


Re: Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?

mpuhlmann - 10.08.2010 07:49
Hallo,

christian schrieb:
-------------------------------------------------------
> Hallo Egon,
>
> ich glaube, es müsste reichen, die fragliche Zeile
> in der Konfiguration einfach ganz wegzulassen.

ich denke eher, es geht darum ausgewählte Tabellenstrukturen nicht neu erzeugen zulassen - nämlich die großen Tabellen. Alle anderen sollten schon neu erzeugt werden. Dies ist aus meiner Sicht jedoch nicht möglich.

Workaround 1

SQL Skript erstellen, welches alle nicht gewünschten Tabellen löscht und dann wieder neu erzeugt. Hierbei muss man jedoch bedenken, dass alle Tabellen, welche durch die nicht zu löschenden Tabellen referenziert werden (über Fremdschlüssel etc.) auch nicht gelöscht werden dürfen.
Das Skript muss dann während der Bootstrap Phase der Anwendung ausgeführt werden.

Workaround 2

Nicht die Tabellen samt Inhalt erhalten, sondern nur die Daten der Tabellen via Backup oder ähnlichem wegsichern und während des Bootstrap erneut einspielen. Ein interessantes Tool hierfür ist DBUnit.

Gruss

M.Puhlmann


Re: Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?

koeberle - 10.08.2010 09:50
Das sollte gehen, unter der Vorbrausetzung, dass es keine Beziehungen zwischen den Tabellen, die gelöscht werden sollen und denen die nicht gelöscht werden sollen, gibt. Dann kannst du das Datasources-Plugin verwenden. Das ganze konfigurierst du dann so, dass die Donainklassen zu den Tabellen die du behalten willst, einen datasource anderen zugeordnet sind als die die du immer aktualisieren willst.
datasources = {
  datasource(name: 'klein') {
    domainClasses([ DomainKlein, DomainGanzKlein])
    readOnly(false)
    driverClassName(???)
    url(???)
    username('???')
    password('???')
    dbCreate('create-drop')
  }
  datasource(name: 'gross') {
    domainClasses([ DomainGross, DomainGanzGross])
    readOnly(false)
    driverClassName(???)
    url(???)
    username('???')
    password('???')
    //dbCreate('create-drop')
  }
}
Die Konfigurationen für die beiden datasources sollten dann bis auf domainClasses und dbCreate identisch sein. Eventuell macht es sogar Sinn, die Daten in unterschiedliche Datenbanken zu legen.
Christian


Re: Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?

slyfox1972 - 10.08.2010 10:41
Vielen Dank, Christian, das ist die Lösung.

Bei der grossen Datenbank handelt es sich um die OpenGeoDB zum Suchen von Geo-Koordinaten nach Ort, PLZ und mehr.
In SQL exportiert ist diese ca. 67MB groß.
Da macht auch sogar Sinn, eine andere Datenquelle zu verwenden, so lässt sich diese für mehrere Projekte verwenden, ohne sie duplizieren zu müssen.

Gruß

Egon


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Ausnahmeregeln für Tabellen bei ' dbCreate = "create-drop" ' ?" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.