我的 Spring 数据库 (H2) 没有持久化

Posted

技术标签:

【中文标题】我的 Spring 数据库 (H2) 没有持久化【英文标题】:My Spring Database (H2) is not Persisting 【发布时间】:2017-08-04 20:22:33 【问题描述】:

这是我的配置文件

@Configuration
@ComponentScan
public class Config 

@Bean
public DataSource datasource() 
    return new EmbeddedDatabaseBuilder().setName("MyDB").setType(EmbeddedDatabaseType.H2).addScript("schema.sql").build();


@Bean
public JdbcOperations jdbcTemplate(DataSource ds) 
    return new JdbcTemplate(ds);        


运行程序后,找不到“MyDB”数据库。

我知道它是一个内存数据库。如何使其嵌入,以便当我关闭程序时数据库上的数据保持不变,我可以在项目文件夹中找到“MyDB”。

【问题讨论】:

【参考方案1】:
@Bean
public DataSource h2DataSource() 
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(driver);
    dataSource.setUrl(url);
    dataSource.setUsername(username);
    dataSource.setPassword(password);
    return dataSource;


driver: org.h2.Driver
url: jdbc:h2:file:$java.io.tmpdir/database/db_name;AUTO_SERVER=TRUE
username: user
password: pass

【讨论】:

能否请您详细说明一下答案。 不要像现在这样定义数据源,而是按照我的代码示例.. @blueray 这将创建一个基于文件的数据库。 h2database.com/html/features.html#embedded_databases

以上是关于我的 Spring 数据库 (H2) 没有持久化的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot 文件系统中的持久 h2 数据库

使用 Spring JPA 在 H2 和 Sql Server 中持久化的 Java UUID

Spring data JDBC没有创建表

内存 H2 数据库,插入脚本不持久

在 docker 容器中运行我的 spring 应用程序时清空 h2 db

如何在 Spring Boot 库中启用 H2 控制台?