2011-10-10 9 views
6

Buduję małą aplikację Grails i staram się, aby dane pozostały między restartami serwera w środowisku programistycznym.Grails nie zachowują moich danych DB

Zmieniłem odpowiednią część DataSource.groovy na następujące kwestie:

development { 
    dataSource { 
     dbCreate = "update" // one of 'create', 'create-drop','update' 
     url = "jdbc:hsqldb:mem:devDB" 
    } 
} 

Za każdym razem restart serwera, wszystkie dane zniknęły. Czy brakuje mi innej konfiguracji?

Próbowałem go zarówno z danymi próbnymi, jak i bez nich w BootStrap.groovy (jeśli to robi jakąkolwiek różnicę).

+0

... z której wersji Grails korzystasz? – vector

+0

@vector Dzięki, usunąłem słowo kluczowe "mem". Wszystko działa teraz. – sim

+0

... więc napisałem jako odpowiedź :-) – vector

Odpowiedz

11

... spróbuj upuścić część "mem" łańcucha adresu URL: jdbc: hsqldb: devDB W tej chwili używasz bazy danych w trybie pamięci, stąd utrata danych. Uruchamianie bazy danych w trybie wbudowanym powinno robić to, czego potrzebujesz.

+0

Należy pamiętać, że aktualizacja db-create nie usuwa danych. Stworzyłem i po usunięciu memu usunięcie danych, ale zdałem sobie sprawę, że db-create update w połączeniu z usunięciem mem, rozwiązuje ten problem – cyan

1

Używasz bazy danych w pamięci, więc nie ma możliwości przetrwania danych po ponownym uruchomieniu serwera. Przełączyć się na trwałe bazy danych (MySQL, PostgreSQL, itd.), A następnie ustawić dbCreate = 'validate'

Na przykład, zakładając, że wybrał MySQL jako bazy danych musisz zmienić ustawienia w DataSource.groovy do:

development { 
    dataSource { 
     dbCreate = "validate" 

     // Put the MySQL JDBC JAR on the classpath of your Grails app 
     driverClassName = "com.mysql.jdbc.Driver" 

     // Change these property values as needed 
     url = "jdbc:mysql://localhost/yourDB" 
     username = "yourUser" 
     password = "yourPassword" 
    } 
} 
+0

... miałeś na myśli PostgreSql mówiąc "właściwe", prawda? – vector

1

Twój adres URL jest skonfigurowany do korzystania z bazy danych w pamięci. To właśnie odnosi się do "mem" w twoim ciągu URL.

Ułatwiam, zwłaszcza w małym projekcie do użycia BootStrap.groovy w połączeniu z/dbCreate = "create-drop".

Możesz zmienić adres URL, aby wskazywał na plik lub relacyjną bazę danych, jeśli chcesz kontynuować korzystanie z BootStrap.groovy. Używam grails 2.0 w/w db w pamięci.

url = "jdbc: H2: db/devDb; auto_server = true"

Oto przykład przy użyciu MySQL (zakładając, że masz sterownik JDBC dla MySQL są dostępne):

url = „jdbc: mysql : // localhost: 8080/foo autoreconnect = true”

przykładem szer/pliku:

url = "jdbc: hsqldb: file:? prodDb; shutdown = true"

Nadzieja to pomaga.

Powiązane problemy