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

针对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日

相关文章

  • C#中Socket与Unity相结合示例代码

    让我来详细讲解一下“C#中Socket与Unity相结合示例代码”的完整攻略。 一、为什么要在Unity中使用Socket? Unity是一款强大的跨平台游戏引擎,可用于开发3D和2D游戏。但是,Unity的网络通信功能比较薄弱,如果想实现一些具有高度联网性的游戏功能,就必须通过Socket在Unity中实现网络通信。 二、如何在Unity中使用Socket…

    Java 2023年5月19日
    00
  • 简单了解Java位域的一些知识

    简单了解Java位域的一些知识 Java中的位域是一种内存优化技术,可以在一个变量中存储多个布尔值,以节省内存空间。本文将介绍Java位域的基本知识,包括如何使用位运算符来设置和获取位值,以及如何在Java中使用位域。 什么是Java位域? Java位域是一种数据结构,用于在单个变量中存储多个布尔值。它可以通过位运算符来实现。在Java的位域中,每个布尔值使…

    Java 2023年5月26日
    00
  • java中常见的死锁以及解决方法代码

    下面是Java中常见的死锁以及解决方法的完整攻略。 什么是死锁? 死锁是指在并发编程中,两个或多个线程互相持有对方需要的资源,从而造成它们都无法继续执行的情况。此时,程序会进入一个死循环状态,无法正常运行,也无法进行下一步操作。 常见的死锁场景 以下是一些常见的导致死锁的场景: 1. 多个线程竞争同一资源 多个线程同时竞争同一个资源,如果每个线程都持有该资源…

    Java 2023年5月23日
    00
  • 深入浅析Jsp中 out.print 和 out.write 的区别

    这篇攻略将会详细探讨JSP中out.print和out.write的区别。 概述 在JSP页面中,有两个对象分别是out和response,用于将数据传送到浏览器。其中,out对象提供了一些方法,通过该方法我们可以输出一些内容到浏览器端的页面。 out对象的方法有很多,其中比较常用的是out.print和out.write。这里我们将会讲解这两个方法的区别。…

    Java 2023年6月15日
    00
  • Java String 对象(你真的了解了吗)

    Java String 对象(你真的了解了吗) 什么是 Java String 对象 Java String 是 Java 语言中的一个类,用于存储和操作字符串。String 对象在 Java 中非常常用,几乎每个 Java 程序都会用到。 每个 Java String 对象都是不可变的(immutable),即一旦创建了一个 String 对象,它的值就不…

    Java 2023年5月26日
    00
  • MyEclipse怎么关闭.html.jsp的可视化编辑器?

    要关闭 MyEclipse 中 HTML 和 JSP 的可视化编辑器,可以按照以下步骤进行操作: 打开 MyEclipse 编辑器,找到菜单栏中的“Windows”选项,并选择“Preferences”。 在弹出的“Preferences”窗口中,选择“Web”下的“Editors”选项。 在“Editors”选项中,可以看到“HTML”和“JSP”的编辑器…

    Java 2023年6月15日
    00
  • IntelliJ IDEA中ajax开发实现分页查询示例

    IntelliJ IDEA是一款优秀的Java集成开发环境,它内置了强大的插件和工具,为开发者提供了丰富的开发体验。在IntelliJ IDEA中使用Ajax实现分页查询的过程,需要按照以下步骤进行: 1. 添加相关依赖 在IntelliJ IDEA中,可以使用Maven或Gradle来管理项目依赖。因此,我们需要在pom.xml文件中添加相关依赖,如下所示…

    Java 2023年6月15日
    00
  • 用Java生成二维码并附带文字信息

    生成二维码并附带文字信息可以通过Java中的ZXing库来实现。下面是具体的步骤: 1. 引入ZXing库 首先需要引入ZXing库,在Maven项目中可以通过添加以下依赖来引入: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core…

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