spring-boot - 使用 Spring Boot 时如何防止 HSQLDB 在应用程序运行之间持久化数据?
问题描述
我正在运行 Spring Boot/Web 应用程序,并且在原型设计期间使用嵌入式 HSQLDB。作为其中的一部分,我不想在运行之间保留数据。我希望系统中的唯一数据是来自这些脚本的数据。
如何修改我的配置以实现这一目标?
@Configuration
public class RepoConfig {
@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:table.sql")
.addScript("classpath:data.sql")
.build()
;
return db;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
}
我尝试在创建表之前添加一个脚本来删除表,比如
删除表 mytablename ;
但我不断收到错误:
用户缺少权限或找不到对象:MYTABLENAME
PS:
- 春季启动 2.5.0
- HSQLDB 2.6.0
解决方案
您可以使用以下配置来做到这一点:
spring.jpa.hibernate.ddl-auto = create-drop
您可以找到有关使用 Hibernate 初始化数据库的更多详细信息
或者你也可以设置这个属性spring.datasource.data
spring.datasource.data=drop.sql,data.sql
那么这些文件应该在
src/main/resources/drop.sql
src/main/resources/data.sql
推荐阅读
- python - 使用 Prometheus 观察 django-background-tasks 指标
- php - 语法错误,使用 laravel 6 的意外“foreach”(T_FOREACH)
- c - 你有任何简单的哈希函数,它需要前三个字母吗?
- java - 我无法启动我的 Spring Boot 项目,运行时出现错误 404
- elasticsearch - Kubernetes 日志在 kibana 中拆分
- javascript - 将日期字符串转换为具有当前时区格式的对象
- asp.net - Blazor Webassembly 身份验证非常慢
- python - 提醒功能:如何让它接受多个时间参数的值?
- sql-server - SQL 查询 - SUM 和 JOIN 多个表但返回缺少的记录
- html - 遍历代码行并更改 getElementsByClassName 的整数