Spring Boot数据源和H2数据库路径

时间:2018-06-20 05:50:10

标签: spring-boot spring-data-jpa spring-data datasource h2

在我的Spring Boot应用程序中,我正在尝试配置H2数据库文件夹的路径。我想通过以下路径放置它:

/home/public/h2

配置如下:

# Datasource
spring.datasource.url=jdbc:h2:file:/home/public/h2
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

导致以下错误:

Caused by: org.h2.jdbc.JdbcSQLException: A file path that is implicitly relative to the current working directory is not allowed in the database URL "jdbc:h2:file:/home/public/h2". Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-197]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) ~[h2-1.4.197.jar:1.4.197]

我也尝试过spring.datasource.url=jdbc:h2:file:~/home/public/h2,但是它不起作用。

我在做什么错了,如何正确配置路径?

3 个答案:

答案 0 :(得分:1)

尝试这个@Alexanoid。...

使用 jdbc:h2:./name (明确的相对路径),或将系统属性 h2.implicitRelativePath 设置为 true (以防止此检查)。对于Windows,绝对路径还需要包含驱动器("C:/...")

h2.implicitRelativePath=true
spring.datasource.url=jdbc:h2:~/home/public/h2

h2.implicitRelativePath=true
spring.datasource.url=jdbc:h2:file:~/home/public/h2

有关更多详细信息,请参见此处... https://www.h2database.com/javadoc/org/h2/api/ErrorCode.html

答案 1 :(得分:0)

更改自

  

spring.datasource.url = jdbc:h2:file:〜/ home / public / h2

收件人:

  

spring.datasource.url = jdbc:h2:〜/ home / public / h2

答案 2 :(得分:0)

你的路径有两个问题,一个是开头,一个是结尾。

作为您问题注释的初始评论,您遗漏的第一个是 ~ 是一个特殊的路径字符,它指的是您用户的主目录。

如果您的主目录是 /home/alexanoid 并且您希望数据库位于 /home/public/ 中,请不要使用 ~,因为 ~/home/public/h2 表示 /home/alexanoid/家庭/公共/h2。

第二个问题是,根据文档,数据库名称必须至少为 3 个字符,因此“h2”不是有效的数据库名称。您需要选择一个稍长的数据库名称,例如“h2db”。