【发布时间】:2022-06-22 16:30:01
【问题描述】:
我遇到了这个异常:
org.h2.jdbc.JdbcSQLException:
Table "CUSTOMERS" not found; SQL statement:
SELECT * FROM CUSTOMERS
这是 H2 控制台。我在那里创建了一个表:
我有 application.yml 文件。我也尝试添加 DB_CLOSE_DELAY=-1 和 DATABASE_TO_UPPER=false:
spring:
database:
url: jdbc:h2:mem:testdb
h2:
console.enabled: true
另外,我有一个配置类,我在其中创建了 H2 嵌入式数据库:
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
最后是查询。该表名为 CUSTOMERS:
public List<Customer> getAll() {
return jdbcTemplate.query("SELECT * FROM CUSTOMERS", (resultSet, rowNum) -> {
Customer customer = new Customer();
customer.setId(resultSet.getLong("id"));
customer.setName(resultSet.getString("name"));
customer.setAge(resultSet.getInt("age"));
return customer;
});
}
我该怎么办?
【问题讨论】:
-
如果将
url: jdbc:h2:mem:testdb更改为url: jdbc:h2:~/test会发生什么? -
数据库不是叫“test”,不是叫“testdb”吗?
-
@Dai 我刚刚尝试过。同样的问题。
-
如果使用绝对路径(而不是
~-home-relative 路径)怎么办?即尝试/home/$you/test? Spring 在什么用户身份下运行? (这可以解释为什么~不起作用:您解析的~主路径与Spring 的~主路径不同)。 Spring 进程是否具有chmod读取/写入文件的权限?此外,使用比test更具体的文件名 - 如果您使用更独特的名称(例如mytesth2db),那么您可以更轻松地在文件系统中找到它。 -
@OldProgrammer,你是对的,默认名称是 testdb。我也试过了,还是有问题。
标签: java sql spring-boot yaml h2