【发布时间】:2021-05-22 11:32:11
【问题描述】:
我的测试 application.yml 如下:
spring:
datasource:
url: jdbc:hsqldb:hsql:/localhost:9001/db/test
driverClassName: org.hsqldb.jdbcDriver
username: root
password:
jpa:
show-sql: false
hibernate:
ddl-auto: create-drop
use-new-id-generator-mappings: false
Db 连接配置类如下:
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@EntityScan("com.x.project")
@EnableJpaRepositories("com.x.project")
public class DatabaseConfiguration {
@Value("${spring.datasource.driverClassName}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Bean
public DataSource dataSource() {
return new HikariDataSource(hikariConfig());
}
private HikariConfig hikariConfig() {
HikariConfig config = new HikariConfig();
config.setDriverClassName(driverClassName);
config.setJdbcUrl(url);
config.setUsername(username);
config.setPassword(password);
config.setPoolName("my db pool");
config.setMaximumPoolSize(2);
return config;
}
}
由于我是 HSQLDB 新手,我不确定在使用 jdbc:hsqldb:hsql:/localhost:9001/db 之类的 URL 时是否需要下载 hsqldb 服务器。
我得到的错误是:
原因:org.hsqldb.HsqlException: 获取数据库锁 失败:lockFile: org.hsqldb.persist.LockFile@2e637605[file =null, 存在=假,锁定=假,有效=假,] 方法:setPath 原因: java.io.IOException:
我应该如何解决这种情况?
【问题讨论】:
-
这能回答你的问题吗? Database lock acquisition failure and hsqldb
-
请发布完整的异常堆栈跟踪
-
您的 jdbc-url 意味着在“服务器模式”下使用 hsql(替代方案是:“文件”和“内存”)。异常消息让我们假设数据库已经被锁定。 (通过正在运行/过时的进程)
-
@xerx593 如果在服务器模式下使用,我应该下载 hsqldb 服务器并从 cmd 运行吗? (因为我已经尝试过但无法解决)。我刚从 intellij 运行,但是当唯一的连接器是 intellij 时,什么会锁定数据库?
-
如果你这样问:1. 你应该使用文件/内存模式!;) 2. 杀死(未识别的 java)进程,清理文件系统(
db/test可能在某个地方) ...baledung has an article,它展示了如何在“独立/服务器模式”下使用它,对于嵌入式使用,您只需要更改 url(第 3.2 节 ...并且 不要 开始一个服务器,但只需将 jar 打包到嵌入应用程序中)。
标签: java spring spring-boot hsqldb