解决springboot的JPA在Mysql8新增记录失败的问题

yizhihongxing

针对Spring Boot的JPA在MySQL 8新增记录失败的问题,可以采取以下步骤进行解决:

问题原因

在MySQL 8的版本中,密码加密方式由以前的mysql_native_password改成了新的加密方式caching_sha2_password,由此就导致了Spring Boot的JPA在MySQL 8新增记录失败的问题。

解决方法

  1. 修改MySQL用户密码加密方式

此方法是修改MySQL用户密码加密方式,使其与Spring Boot的JPA兼容。具体操作如下:
- 登录MySQL,输入以下命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '用户密码';
- 其中,root为用户名,%表示所有IP地址均可,也可以替换为具体的IP地址;用户密码为MySQL登录密码。
- 修改完成之后,可以重新启动Spring Boot应用,新增数据应该已经可以正常插入了。

  1. 配置MySQL连接驱动程序

此方法是在Spring Boot应用中配置MySQL连接驱动程序。具体操作步骤如下:
- 在Spring Boot的Maven配置文件中,添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
  • 在Spring Boot应用的application.ymlapplication.properties文件中,添加以下配置:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 用户密码
    driver-class-name: com.mysql.cj.jdbc.Driver
  • 其中,url中有多个配置参数,其中useSSL=false表示不使用SSL加密连接;serverTimezone=UTC表示使用UTC作为服务器的时区;allowPublicKeyRetrieval=true表示开启公钥检索的功能;useUnicode=truecharacterEncoding=UTF-8表示使用UTF-8字符集进行数据传输。
  • 配置完成之后,重新启动Spring Boot应用,新增数据应该已经可以正常插入了。

以上两种解决方法,可根据实际情况进行选择和尝试,其中第二种方法更具通用性,在其他情况下也可以采用。接下来提供两条示例:

示例一

如下是一个使用Spring Boot的JPA插入数据库数据的示例:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private Integer age;

    // getter/setter
}
@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User save() {
        User user = new User();
        user.setName("sam");
        user.setAge(18);
        return userRepository.save(user);
    }
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

若Spring Boot应用连接的是MySQL 8,则使用以上代码插入数据时会出现无法插入的情况。此时可以通过上述两种方法进行解决。

示例二

如下是一个Spring Boot应用的MySQL参数配置示例,以使用阿里云MySQL为例:

spring:
  datasource:
    url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 用户密码
    driver-class-name: com.mysql.cj.jdbc.Driver
  • 其中,xxx.xxx.xxx.xxx为阿里云MySQL的IP地址;其他参数与前面介绍的一致。
  • 配置完成之后,启动Spring Boot应用,应该可以正常连接阿里云MySQL并操作数据了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决springboot的JPA在Mysql8新增记录失败的问题 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java窗口精细全方位讲解

    Java窗口精细全方位讲解 简介 本篇攻略将完整讲解如何用Java语言创建窗口并增加各种控件,包括文本框、按钮、下拉框等等,并讲解如何实现它们的交互功能。 准备工作 在开始编程前,你需要安装Java开发工具包(JDK)和一个编译器,比如Eclipse或者IntelliJ IDEA。这里我们以Eclipse为例。 创建窗口 要创建窗口,我们需要创建一个新的Ja…

    Java 2023年5月23日
    00
  • 在windows下揪出java程序占用cpu很高的线程并完美解决

    以下是针对“在 Windows 下揪出 Java 程序占用 CPU 很高的线程并完美解决”的完整攻略: 1. 使用 Java 可视化工具揪出占用 CPU 较高的线程 步骤1:下载 VisualVM VisualVM 是一款 Java 虚拟机监控和性能分析工具,可以在 Windows 等多个平台上使用,具有良好的界面和体验。可以到以下网址下载 VisualVM…

    Java 2023年5月19日
    00
  • 本地方法栈的作用是什么?

    本地方法栈(Native Method Stack)是Java虚拟机中的一块内存区域,用于存储本地方法的参数、返回值和局部变量等信息。本地方法是指使用本地语言(如C或C++)编写的方法,可以通过Java Native Interface(JNI)调用。本地方法栈是线程私有的,每个线程都有自己的本地方法栈。本地方法栈的大小可以通过虚拟机参数-Xss进行设置。 …

    Java 2023年5月12日
    00
  • jsp实现针对excel及word文档的打印方法

    当我们需要在JSP页面中实现自定义打印Excel及Word文档的功能,主要需要以下步骤: 在JSP页面中定义需要打印的Excel或Word文档,通常是通过使用文件名标签或者使用input type=”file”>标签上传的方式获取文件。 例如: 将上传的文件保存在服务器端,通常是通过使用Apache POI库实现。 例如: //获取上传的Excel文件…

    Java 2023年6月15日
    00
  • 详细讲述Java中的对象转型

    下面是我详细讲述Java中的对象转型的攻略。 引言 Java中的对象转型是Java中面向对象特性中非常重要的一部分,经常会用到。对象转型又叫作类类型转换,它是将一个对象的类型转换为另一种类型,包括向上转型和向下转型两种类型。本篇攻略将会对Java中的对象转型进行详细的讲解,并提供多个实例来更好地理解这个过程。 向上转型 向上转型是指把一个子类的对象转换为它的…

    Java 2023年5月26日
    00
  • Java中注解的工作原理

    下面是Java中注解的工作原理的完整攻略。 什么是Java注解 Java注解是一种元数据机制,其本质是为了给Java程序提供更好的描述、配置和使用方式的一种注解技术。注解可以被限定用于某些类型、方法、字段或方法参数等Java程序中的特定部分,通过注解可以传递一定的元数据信息,例如对应的某个方法的功能、某个属性的值或某个参数的约束等等。 注解在Java程序中的…

    Java 2023年5月20日
    00
  • mybatis xml 中 大于、小于、等于 写法

    在 *.xml 中使用常规的 < > = <= >= 会与xml的语法存在冲突 方法一:使用xml 原生转义的方式进行转义 字符名称 sql符号 转义字符 大于号 > &gt; 小于号 < &lt; 不等于 <> &lt;&gt; 大于等于号 >= &gt;= 小于…

    Java 2023年4月25日
    00
  • java多媒体文件编码 处理工具类代码实例

    Java多媒体文件编码处理工具类 本文将详细讲解如何使用Java多媒体文件编码处理工具类来编码、解码、转换和编辑多媒体文件。 什么是Java多媒体文件编码处理工具类? Java多媒体文件编码处理工具类是一个Java库,提供了编码、解码、转换和编辑多媒体文件的功能。它支持音频和视频文件的处理,其中包括: 音频格式:MP3、WAV、AIFF、AU、FLAC、OG…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部