【问题标题】:Error executing DDL via JDBC Statement with Spring Boot default configuration使用 Spring Boot 默认配置通过 JDBC 语句执行 DDL 时出错
【发布时间】:2018-08-25 17:25:15
【问题描述】:

这是我在尝试将 Spring Boot 应用程序作为 java 应用程序运行时遇到的错误:
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
Caused by: java.sql.SQLSyntaxErrorException: Schema 'SA' does not exist

我很乐意在 pom.xml 的属性中更改休眠方言(就像在其他类似主题中写的关于这个问题的一样),但它没有帮助。我还尝试更改主题类和字段的名称。
这是 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>com.julian.boot3</groupId>
    <artifactId>boot3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>boot3</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

主类:

package com.julian.spring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

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

POJO:

package com.julian.spring.pojo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="topics")
public class Topic {

    @Id
    private Integer id;
    private String name;
    private String description;

    public Topic() {

    }

    public Topic(int id, String name, String description) {
        this.id = id;
        this.name = name;
        this.description = description;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

}

【问题讨论】:

  • Caused by: java.sql.SQLSyntaxErrorException: Schema 'SA' 不存在,你不明白什么?最好也提供您的应用配置。
  • 如何提供我的应用配置?我没有更改任何配置,这是默认设置。
  • 你的数据库连接在哪里?
  • 我不知道。这是带有 apache.derby 的 Spring Boot 应用程序
  • 您必须在资源文件夹中创建应用配置。

标签: java spring


【解决方案1】:

把它放在资源下的application.properties文件中:

spring.jpa.hibernate.ddl-auto=update

【讨论】:

    【解决方案2】:

    我通过将 spring-boot-starter-parent fomr 2.0.4.REALESE 的版本降级到 1.5.1.RELEASE 解决了这个问题

    【讨论】:

      【解决方案3】:

      请阅读https://spring.io/guides/gs/accessing-data-mysql/这个,这是一个很常见的问题,如何安排与数据库的连接。

      如果你不使用 MySQL,其他数据库也有文章,但对于关系数据库,都是一样的。

      【讨论】:

      • 那么为什么教程中的人不需要连接到任何数据库?它对他有用。
      • 你看过他所有的视频吗?
      • 直到这个问题,是的。
      • 您可以在内存中创建 db,但它是 repo 测试所必需的,请点击我已附加到帖子中的链接,阅读此内容,它将对您有所帮助。
      • 显然是在求SQL server,而且答案很笼统,和SQL server没有关系,这个答案帮助不大。
      猜你喜欢
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 2017-10-20
      • 2019-04-09
      • 2021-10-21
      • 2022-09-29
      相关资源
      最近更新 更多