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"
}
}