Spring boot “数据库”;C:/data/sample";未找到,且IFEXISTS=true,因此我们无法自动创建它-在Spring引导中出错

Spring boot “数据库”;C:/data/sample";未找到,且IFEXISTS=true,因此我们无法自动创建它-在Spring引导中出错,spring-boot,microservices,pom.xml,h2,application.properties,Spring Boot,Microservices,Pom.xml,H2,Application.properties,我已经创建了一个spring启动应用程序来连接h2数据库。执行此操作时,它会抛出一个显示未找到数据库的错误。请帮助我解决我可以实施和解决的问题 我在pom.xml文件中添加了com.h2数据库依赖项,然后它也给出了错误 下面是我的pom.xml文件和application.properties文件 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS

我已经创建了一个spring启动应用程序来连接h2数据库。执行此操作时,它会抛出一个显示未找到数据库的错误。请帮助我解决我可以实施和解决的问题

我在pom.xml文件中添加了com.h2数据库依赖项,然后它也给出了错误

下面是我的pom.xml文件和application.properties文件

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
    <groupId>com.example</groupId>
    <artifactId>santanderdbproj</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>firstproject</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </repository>


    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </pluginRepository>

    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
</project>
我已经附上下面的错误图片,请参考它。

这是一条错误消息,仅出现在1.4.198和1.4.199中。H2的下一个版本(1.4.200)将显示更好的消息,如

数据库…未找到,请预先创建或允许远程数据库创建(不建议在安全环境中使用)

您看到此错误消息是因为您的数据库尚不存在。解决问题的正常方法是首先使用应用程序创建数据库,然后再尝试使用H2控制台登录数据库

H2控制台可以配置为允许创建数据库,但它可能会在您的系统中创建安全漏洞,任何可以打开此页面的人都可以在这种配置中使用您的访问权限对您的系统执行任何操作

请注意,H2从系统托盘中的图标启动的浏览器会话中的H2控制台(您可以简单地将H2-1.4.199 jar作为Java应用程序启动,或者使用
Java-jar H2-1.4.199.jar
)允许您以安全的方式创建新数据库。你可以用它来达到这个目的。如果您不打算将其用作TCP服务器,请在创建数据库后从系统托盘图标将其关闭,以确保它不会保存您的数据库。也可以使用命令行Shell工具:

Spring提供的H2控制台不具备此类功能


旧版本的H2(高达1.4.197)也允许创建数据库,包括Spring中的控制台,但它同样会在系统中造成安全漏洞。

您可能没有指定版本,请在pom.xml中添加此依赖项 这会奏效的

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
</dependency>

将下面这样的db版本添加到maven依赖项中,为我解决了这个问题

<version>1.4.193</version>
1.4.193

覆盖h2数据库依赖项的版本对我来说很有效

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

com.h2数据库
氢
运行时
1.4.193

我们想从1.4.193升级到1.4.200,所以不,将版本设置为1.4.193对我们来说不是正确的解决方案。在我们的过程中,我们可以选择启动TCP服务器,因此我从接受的答案中读取了链接:

正如建议的那样(实际上,出于安全原因没有建议,但我们接受了风险),我在
Server.createTcpServer(…)
调用中添加了
-ifNotExists
参数,问题为我们解决了。

a)尝试在application.properties中给出spring.datasource.url=jdbc:h2:mem:testdb
b) 确保您正在h2控制台中使用jdbc:h2:mem:testdb作为数据库URL

您是否在嵌入到Spring中的h2控制台中看到此错误?默认情况下,它不再允许创建数据库,因为1.4.198出于安全原因,您需要首先在应用程序中创建数据库。如果您在应用程序的堆栈跟踪中看到此错误,请将其发布到此处。我在本地主机上运行应用程序时在网页中看到此错误。当我点击connect按钮时,它抛出错误。我已经更新了问题并附上了错误页面的图片链接,请查看@EvgenijRyazanovi是使用初始值设定项创建的启动项目-此链接帮助我而不是application.properties,我更改了application.yml并粘贴了以下链接。(),不要忘记删除db名称末尾的分号。添加版本对我有效。谢谢
<version>1.4.193</version>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
    <version>1.4.193</version>
</dependency>