2011-10-10 7 views
6

Estoy construyendo una pequeña aplicación Grails, y estoy tratando de hacer que los datos persistan entre reinicios del servidor en el entorno de desarrollo.Grails que no conserva mis datos DB

me cambió la parte pertinente del DataSource.groovy a lo siguiente:

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

Cada vez que reinicie el servidor, todos los datos que ha desaparecido. ¿Me estoy perdiendo otra configuración?

Lo he probado con y sin datos de muestra en BootStrap.groovy (si eso hace la diferencia).

+0

... ¿qué versión de Grails estás usando? – vector

+0

@vector Gracias, eliminé la palabra clave 'mem'. Todos trabajando ahora. – sim

+0

... así que lo publique como respuesta :-) – vector

Respuesta

11

... intente eliminar la parte 'mem' de su cadena url: jdbc: hsqldb: devDB En este momento está ejecutando el db en modo memoria, de ahí la pérdida de datos. Ejecutar el db en modo incrustado debe hacer lo que necesita.

+0

tenga en cuenta que la actualización de db-create no elimina los datos. Creé y después de eliminar mem, borré datos, pero me di cuenta de que db-create update junto con eliminar mem, resuelve este problema – cyan

1

Está utilizando una base de datos en memoria, por lo que no hay forma de que los datos sobrevivan en los reinicios del servidor. Cambiar a una base de datos persistente (MySQL, PostgreSQL, etc.), a continuación, establecer dbCreate = 'validate'

Por ejemplo, suponiendo que eligió MySQL como base de datos que necesita para cambiar los ajustes en DataSource.groovy a:

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

... se refería a PostgreSql cuando decía 'correcto', ¿no? – vector

1

Su url está configurado para usar una base de datos en memoria. A eso es a lo que se refiere la "memoria" en su cadena url.

Me resulta más fácil, especialmente con un proyecto pequeño, usar BootStrap.groovy en combinación con dbCreate = "crear-soltar".

Puede cambiar su url para que apunte a un archivo o base de datos relacional, sin embargo, si desea continuar sin utilizar BootStrap.groovy. Estoy usando grails 2.0 w/an en memoria db.

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

Aquí hay un ejemplo usando MySQL (suponiendo que tiene un controlador JDBC para MySQL está disponible):

url = "jdbc: mysql : // localhost: 8080/foo autoreconnect = true"

Un ejemplo w/archivo:

url = "jdbc: hsqldb: file: PRODDB; apagado = true"

Espero que esto ayude.

Cuestiones relacionadas