Spring Boot,JPA 错误:“通过 JDBC 语句执行 DDL 时出错”

2024-07-04

我正在尝试使用一个非常基本的(到目前为止)Spring Boot 应用程序在我的 MySQL 数据库中添加一个条目。我使用了在网上找到的一些零碎内容,这是我试图遵循的代码:

netgloo/spring-boot-samples/spring-boot-mysql-springdatajpa-hibernate https://github.com/netgloo/spring-boot-samples/tree/master/spring-boot-mysql-springdatajpa-hibernate

目前,我在运行应用程序时遇到以下问题。

当我第一次运行该应用程序时,会引发以下异常:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement

当我向控制器发出 POST 请求时(该请求应该在数据库中创建一个新条目),我收到以下异常:

org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement

这又是由以下原因引起的:

Caused by: java.sql.SQLException: No database selected

应用程序属性:

# Web pages extension
spring.mvc.view.suffix =.html

# ==============================
# --- DATA SOURCE
# ==============================

# Database url
spring.datasource.url = jdbc:mysql://localhost:3306?useSSL=false

# Database credentials
spring.datasource.username = root
spring.datasource.password = root

# Keep database connection alive
spring.datasource.tomcat.test-while-idle = true
spring.datasource.tomcat.validation-query = SELECT 1

# ==============================
# --- JPA / Hibernate
# ==============================

# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto = update

# Naming strategy
spring.jpa.hibernate.naming.strategy = org.hibernate.cfg.ImprovedNamingStrategy

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
     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>my.group</groupId>
<artifactId>myapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

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

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
</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-web</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.12.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.12.Final</version>
    </dependency>


    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20171018</version>
    </dependency>



</dependencies>

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

我有这个简单的界面:

@Transactional
public interface UserDAO extends CrudRepository<User, Long>
{
    public User findByEmail(String email);
}

这是我的控制器:

@Controller
public class UserController
{
    @Autowired
    private UserDAO userDAO;

    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String getRegisterView()
    {
        return "register/registerView";
    }

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public @ResponseBody
    ControllerResponse registerRequest(@RequestBody String request)
    {
        User user = null;
        JSONObject json = new JSONObject(request);

        try
        {
            user = new User();

            user.setEmail(json.getString("email"));
            user.setName(json.getString("name"));
            user.setSurname(json.getString("surname"));
            user.setPassword(json.getString("password"));

            userDAO.save(user);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        ControllerResponse response = new ControllerResponse();
        response.setMessage("Controller returned this");
        response.setSuccess(true);
        return response;
    }
}

我的用户类定义如下:

public class User
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotNull
    private String email;

    @NotNull
    private String password;

    @NotNull
    private String name;

    @NotNull
    private String surname;

    @Column(name = "authorization_token")
    private String authorizationToken;

    // bunch of getters/setters
}

application.properties 中的数据源 URL 缺少数据库名称。应该是这样的。

spring.datasource.url = jdbc:mysql://localhost:3306/dbname?useSSL=false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot,JPA 错误:“通过 JDBC 语句执行 DDL 时出错” 的相关文章

随机推荐

  • Azure SQL Azure AD 身份验证失败

    我正在尝试连接到我的 Azure SQL 数据库 该数据库具有来自我的 NET 应用程序 Sitecore 的 Azure Active Directory 数据库包含的用户 我在托管 NET 应用程序的虚拟机上安装了 adalsql dl
  • 了解 Python 2.7 中 io.open() 方法的缓冲参数

    我试图理解的缓冲参数io open https docs python org 2 library functions html openPython 2 7 中的方法 我在Python解释器中执行 import utils buffer
  • jQuery - 我可以验证禁用的字段吗?

    我有一个表单 用户需要单击链接 通过弹出窗口选择用户 然后使用 ID 填充隐藏字段 使用用户名填充显示字段 显示字段设置为disabled disabled 以强制用户使用弹出窗口而不是在字段中键入值 我需要确保用户选择一个名称 我正在使用
  • 发送抓取请求以获取 torrent 的种子和同级

    我一直在尝试创建一个 torrent 网站 但我遇到了以下问题 如何发送 torrent 抓取请求以获取其播种者和水蛭 我有一个 PHP 类函数 它为我提供公告列表 public function getTrackers Load trac
  • 了解 ibeacon 距离

    尝试掌握 ibeacon 信标 低功耗蓝牙 BLE 如何保持距离的基本概念 有没有关于 ibeacon 到底能测量多远的真实文档 假设我在 300 英尺外 ibeacon 是否有可能检测到这一点 专门针对 v4 v5 和 iOS 但通常是任
  • 是否可以从 JavaScript 注入的内联样式中减去一个数字?

    我在 HTML 中添加了内联样式 例如style left 10px 我可以添加 减去该数字吗 我想创建一个可以删除的规则8px从该数字开始 无论该数字是多少 我尝试使用丑陋的 importanthack 来覆盖它 但是当初始值改变时这没有
  • 获取pygame中图像各个像素的颜色

    如何获取传输到 pygame 表面的图像像素的颜色值 使用 Surface get at 仅返回表面层的颜色 而不返回其上位图传输的图像 方法surface get at很好 下面的示例显示了在没有 Alpha 通道的情况下位图传输图像时的
  • “无法连接到 iTunes Store”

    昨晚 应用内购买没有在 iOS7 模拟器设备上显示 但今天我什至没有更改代码 我也开始在 iOS 8 设备上遇到相同的错误 这是我的课 class InAppC UITableViewController SKProductsRequest
  • Java并发hashMap检索

    ConcurrentHashMap文档说 检索操作 包括 get 通常不会阻塞 因此可能与更新操作 包括 put 和 remove 重叠 检索反映了最近完成的更新操作在其开始时的结果 更正式地说 给定键的更新操作与报告更新值的该键的任何 非
  • 使用来自外部 JS 文件的 Google Analytics 异步代码

    我正在尝试将 Google Analytics 跟踪代码的异步版本添加到网站 我想将 JavaScript 保存在一个单独的文件中 并从那里调用它 这是我的 js 文件中当前的内容 function addLoadEvent func va
  • 重命名由 android 10 中的应用程序创建的 Mediastore 文件。在 Android API 30 上工作,但在 API 29 中显示错误

    在这里 这个 renameFile 函数在 Android API 30 中工作 但是 它在 Android API 29 中不起作用 并显示如下错误 java lang IllegalArgumentException 不允许移动不属于明
  • 如何使用 w3m 呈现 EMAIL 消息中的 HTML 内容?

    我如何使用 w3m 或其他方式在 EMAIL 消息中显示内嵌的 HTML 内容 或者至少在外部 Web 浏览器中打开其 MIME 部分 我找到的唯一解决方案是在 EmacsWiki 中 但它是 1996 年的代码 对我来说不起作用 至少在
  • Chrome 与 Firefox 后台缓存

    我有一个 drupal 网站 其视图链接到详细信息页面 视图具有分页功能 问题是这样的 在 FireFox 中 当您从视图的第 8 页转到详细信息页面时 然后单击后退按钮 您最终会看到page 8的视图 好的 在 Chrome 中 当您从视
  • 在 TAM 中实施 ConQuest 评分命令

    在 IRT 软件中ConQuest您可以使用命令 score 使用相同的清单变量 原始数据但不同的编码来对多个维度 潜在变量进行建模 例如 score 1 2 3 0 1 2 0 1 0 items 1 3 将原始分数从 1 到 3 重新编
  • cloudwatch/eventbridge事件调用时如何获取ECS中的事件内容?

    我们可以设置事件规则来触发ECS任务 但我没有看到触发事件是否传递给正在运行的ECS任务以及任务中如何获取该事件的内容 如果 Lambda 被触发 我们可以从event变量 例如在Python中 def lambda handler eve
  • 如何在 Windows 上的 Chrome 中打开 Jupyter 笔记本

    在我的 Windows PC 上 我安装了 anaconda 当我打开 jupyter 笔记本时 它会在 Internet Explorer 中打开 但我想使用 Chrome 有谁知道如何实现这一目标 如果您还没有创建笔记本配置文件 请运行
  • redux fetch body 不能在无 cors 模式下使用

    我有一个调用函数的操作 dispatch Api url my url method POST data data 这里我将数组作为数据传递 import fetch from isomorphic fetch export default
  • 熊猫读_csv。如何忽略换行符之前的分隔符

    我正在读取一个包含数值的文件 data pd read csv data dat sep header None 在文本文件中 每行以空格结尾 因此 pandas 等待不存在的值 并在每行末尾添加一个 nan 例如 2 343 4 234
  • **线程“main”中的异常java.util.InputMismatchException**

    我正在尝试从 txt 文件中获取一些记录并将其放入以下 Java 程序的数据库中 package Java Demo import java sql import java util import java io public class
  • Spring Boot,JPA 错误:“通过 JDBC 语句执行 DDL 时出错”

    我正在尝试使用一个非常基本的 到目前为止 Spring Boot 应用程序在我的 MySQL 数据库中添加一个条目 我使用了在网上找到的一些零碎内容 这是我试图遵循的代码 netgloo spring boot samples spring