Граальс не сохраняет мои данные БД - PullRequest
7 голосов
/ 10 октября 2011

Я создаю небольшое приложение Grails и пытаюсь обеспечить сохранение данных между перезапусками сервера в среде разработки.

Я изменил соответствующую часть DataSource.groovy на следующую:

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

Каждый раз, когда я перезагружаю сервер, все данные исчезают.Мне не хватает другой конфигурации?

Я пробовал ее как с образцами данных, так и без них в BootStrap.groovy (если это имеет какое-то значение).

Ответы [ 3 ]

13 голосов
/ 10 октября 2011

... попробуйте удалить часть 'mem' из строки URL: jdbc: hsqldb: devDB. Сейчас вы запускаете db в режиме памяти, что приводит к потере данных. Запуск БД во встроенном режиме должен делать то, что вам нужно.

1 голос
/ 10 октября 2011

Ваш URL настроен на использование базы данных в памяти. Это то, к чему относится «mem» в вашей строке URL.

Мне проще, особенно с небольшим проектом, использовать BootStrap.groovy в комбинации w / dbCreate = "create-drop".

Вы можете изменить свой URL, чтобы он указывал на файловую или реляционную базу данных, если вы хотите сохранить без использования BootStrap.groovy. Я использую Grails 2,0 W / A в памяти дБ.

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

Вот пример использования mySql (при условии, что у вас есть драйвер jdbc для mysql):

url = "jdbc: mysql: // localhost: 8080 / foo? Autoreconnect = true"

Пример с файлом:

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

Надеюсь, это поможет.

1 голос
/ 10 октября 2011

Вы используете базу данных в памяти, поэтому нет никакой возможности для выживания данных при перезапуске сервера.Переключитесь на постоянную базу данных (MySQL, Postgres и т. Д.), Затем установите dbCreate = 'validate'

Например, предполагая, что вы выбрали MySQL в качестве базы данных, вам нужно изменить настройки в DataSource.groovy на:

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"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...