Spring Boot 使用h2数据库时如何“允许远程数据库创建”?

3duebb1j  于 2023-02-04  发布在  Spring
关注(0)|答案(4)|浏览(328)

我试图创建一个与H2数据库,这将是其他程序访问的 Spring 启动项目。

  • 应用程序.属性 *
spring.datasource.url = jdbc:h2:tcp://localhost:8084/~/./db/tech
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.initialization-mode=always
  • 我的应用程序. java *
@SpringBootApplication
public class SpringBootMyApplication{

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMyApplication.class, args);
    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public Server h2Server() throws SQLException {
        return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "8084");
    }

}

例外情况是:

Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/onz03589/db/tech" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200]

如何真正"允许远程数据库创建"?

4nkexdtk

4nkexdtk1#

你需要在Server.createTcpServer()中添加"-ifNotExists"参数,但是,同样,你不应该把它和"-tcpAllowOthers"一起使用,除非你的端口被保护了。

huwehgph

huwehgph2#

您需要添加spring Boot starter jpa依赖项来启用h2数据库设置的自动配置。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
ffscu2ro

ffscu2ro3#

我在pom.xml中添加了这两个依赖项

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
        <scope>runtime</scope>
    </dependency>

并在www.example.com下面添加Application.properties

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

这对我很有效。
如果在创建数据库时要插入任何表或数据,可以将.sql文件放在resources目录下

现在,您可以在http://localhost:port/h2-console上打开数据库

svgewumm

svgewumm4#

原因可能是
1.运行服务器并点击控制台后,spring.datasource.url未正确填充。从www.example.com文件复制粘贴urlapplication.properties
1.您可能在属性大写和小写中犯了错误,例如:I have used
spring.datasource.driverclassname
代替
spring.datasource.driverClassName
因此,请检查区分大小写的属性名称

相关问题