Почему данные базы данных файла H2 очищаются каждый раз - PullRequest
0 голосов
/ 10 июля 2019

Я использую базу данных H2 для тестового приложения, используя Spring boot.Каждый раз, когда я перезагружаю приложение весенней загрузки, данные в H2 очищаются.Я использую файл вместо памяти.Я также установил spring.jpa.hibernate.ddl-auto=update в application.properties.Вот мой файл application.properties

spring.datasource.url=jdbc:h2:file:./data/demo
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update

Что я здесь не так делаю.Сохраняет данные нормально.Но как только я закрываю приложение, все данные очищаются.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Я нашел ошибку, которую делал. У меня был файл data.sql в ресурсах, и каждый раз, когда Spring boot запускает приложение, он запускает этот скрипт. В этом сценарии я удаляю и воссоздаю все таблицы. После того, как я удалил эти операторы sql, он работает отлично. Данные сохраняются в файле и не будут стерты после перезапуска сервера.

0 голосов
/ 10 июля 2019

По умолчанию закрытие последнего соединения с базой данных закрывает базу данных.Для базы данных в памяти это означает, что содержимое потеряно.Чтобы оставить базу данных открытой, добавьте; DB_CLOSE_DELAY=-1 к URL базы данных.Чтобы сохранить содержимое базы данных в памяти, пока виртуальная машина жива, используйте jdbc:h2:mem:test;DB_CLOSE_DELAY=-1.;DB_CLOSE_ON_EXIT=FALSE;

Документ об особенностях H2

...