随便唠几句之前做了黑马点评做了一些记录秉承着伟大开源精神最近会陆续整理出来针对一些问题给出修复方案。由于这个项目确实比较老了之前还是的确碰到了不少问题。第一部分总结问题一lombok与jdk版本不兼容问题描述由于本人使用的是jdk21,jdk21中删除了JCImport.qualid字段springboot 2.3.12管理的lombok版本太旧不支持仍然通过反射访问该字段。解决方案在pom.xml中显式指定lombok版本为1.18.30dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.30/version optionaltrue/optional /dependency问题二Mysql 8连接认证失败问题描述mysql 8 默认使用caching_sha2_password 认证插件需通过公钥检索完成认证但是旧版MySQL驱动5.1.47默认禁止公钥检索解决方案在jdbc url中添加allowPublicKeyRetrievaltrue参数spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSLfalseserverTimezoneUTCallowPublicKeyRetrievaltrue username: root password: 你的密码问题三MySQL 8严格模式下timestamp默认值不合法问题描述: MySQL 8默认开启严格模式NO_ZERO_DATE ,黑马点评中的’0000-00-00 00:00:00’是不合法的timestamp默认值但是tb_seckill_voucher表中的begin_time和end_time两个字段却使用了这个默认值解决方案将默认值从’0000-00-00 00:00:00’修改为CURRENT_TIMESTAMP.修改前sql文件CREATE TABLE tb_seckill_voucher ( voucher_id bigint(20) UNSIGNED NOT NULL COMMENT 关联的优惠券的id, stock int(8) NOT NULL COMMENT 库存, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (voucher_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 秒杀优惠券表与优惠券是一对一关系 ROW_FORMAT Compact;修改后sql文件CREATE TABLE tb_seckill_voucher ( voucher_id bigint(20) UNSIGNED NOT NULL COMMENT 关联的优惠券的id, stock int(8) NOT NULL COMMENT 库存, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (voucher_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 秒杀优惠券表与优惠券是一对一关系 ROW_FORMAT Compact;解决了这部分的内容你的项目大概率就可以跑起来并且拿到数据了接下来就去引入前端的代码即可。
黑马点评笔记千年后的大总结
随便唠几句之前做了黑马点评做了一些记录秉承着伟大开源精神最近会陆续整理出来针对一些问题给出修复方案。由于这个项目确实比较老了之前还是的确碰到了不少问题。第一部分总结问题一lombok与jdk版本不兼容问题描述由于本人使用的是jdk21,jdk21中删除了JCImport.qualid字段springboot 2.3.12管理的lombok版本太旧不支持仍然通过反射访问该字段。解决方案在pom.xml中显式指定lombok版本为1.18.30dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.30/version optionaltrue/optional /dependency问题二Mysql 8连接认证失败问题描述mysql 8 默认使用caching_sha2_password 认证插件需通过公钥检索完成认证但是旧版MySQL驱动5.1.47默认禁止公钥检索解决方案在jdbc url中添加allowPublicKeyRetrievaltrue参数spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSLfalseserverTimezoneUTCallowPublicKeyRetrievaltrue username: root password: 你的密码问题三MySQL 8严格模式下timestamp默认值不合法问题描述: MySQL 8默认开启严格模式NO_ZERO_DATE ,黑马点评中的’0000-00-00 00:00:00’是不合法的timestamp默认值但是tb_seckill_voucher表中的begin_time和end_time两个字段却使用了这个默认值解决方案将默认值从’0000-00-00 00:00:00’修改为CURRENT_TIMESTAMP.修改前sql文件CREATE TABLE tb_seckill_voucher ( voucher_id bigint(20) UNSIGNED NOT NULL COMMENT 关联的优惠券的id, stock int(8) NOT NULL COMMENT 库存, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT 0000-00-00 00:00:00 COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (voucher_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 秒杀优惠券表与优惠券是一对一关系 ROW_FORMAT Compact;修改后sql文件CREATE TABLE tb_seckill_voucher ( voucher_id bigint(20) UNSIGNED NOT NULL COMMENT 关联的优惠券的id, stock int(8) NOT NULL COMMENT 库存, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, begin_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 生效时间, end_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 失效时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (voucher_id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 秒杀优惠券表与优惠券是一对一关系 ROW_FORMAT Compact;解决了这部分的内容你的项目大概率就可以跑起来并且拿到数据了接下来就去引入前端的代码即可。