Grails не сохраняет данные моей БД

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

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

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

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

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

3 ответов


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


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

Я нахожу это проще, особенно с небольшим проектом для использования BootStrap.groovy в комбинации с dbCreate= "create-drop".

вы можете изменить свой url, чтобы указать на файл или реляционную базу данных, хотя, если вы хотите сохранить w/out с помощью BootStrap.отличный. Я использую grails 2.0 w / an в БД памяти.

URL-адрес = "jdbc: h2: db/devDb; auto_server=true"

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

url = " jdbc: mysql: / / localhost: 8080 / foo?автореконнект=правда"

пример w / file:

URL-адрес = "с JDBC:hsqldb:файл:prodDb;выключение=правда"

надеюсь, что это помогает.


вы используете базу данных в памяти, поэтому нет возможности для сохранения данных при перезапуске сервера. Переключитесь на постоянную базу данных (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"
    }
}