开源铱塔切换MySQL数据库启动报异常

1.错误日志:

铱塔切换数据库配置为MySQL之后,启动后报错如下:

SqlExceptionHelper - Table 'iotkit.task_info ' doesn't exist

SqlExceptionHelper - Table 'iotkit.rule_info ' doesn't exist

SqlExceptionHelper - Table 'iotkit.device_info ' doesn't exist

SqlExceptionHelper - Table 'iotkit.virtual_device' doesn't exist

2.环境:

  • JDK : corretto-11

  • iotkit-parent : V0.5.X

  • MySQL:5.5.27

3.操作:

3.1阶段一(新拉下来项目)
  1. 用IDEA打开iot-iita-core,等待项目加载完成以后,打开 maven 栏在根目录点击 install
  2. 用IDEA打开iotkit-parent,等待项目加载完成,执行maven reload all project
  3. 修改iot-starter\application.yml,注释H2配置,打开MySQL配置:
  4. 修改iot-dao\iot-data-serviceImpl-rdb\pom.xml,打开MySQL依赖(使用mysql-connector-j)
  5. 在本地MySQL创建iotkit数据库
  6. 启动项目

结果:报错如上,有几张表未初始化成功。

3.2阶段二(执行完阶段一后)

  1. 删除.init和elasticsearch(iotkit.mv.db、iotkit.trace.db文件未找到)
  2. 清除数据库
  3. 重启项目

结果:报错如上,有几张表未初始化成功。

4.分析

根据报错日志,可知是表未创建成功。

5.原因

代码中的主键生成策略为整型的,不适用于String类型的主键,导致创建表失败

6.解决方案

将iotkit-parent\iot-dao\iot-data-serviceImpl-rdb\src\main\java\cc\iotkit\data\model目录下,所有Tb开头的类,主键类型为String类型的,主键生成策略修改为UUID

java 复制代码
	@Id
	@GeneratedValue(generator = "UUID")
	@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
	@Column(length = 36)
	@ApiModelProperty(value = "主键")
	private String id;

重新删除.init文件夹,清空iotkit数据库,重启项目,所有表都创建成功!

相关推荐
云和数据.ChenGuang2 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠2 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
silvamux_5 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn6 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠6 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长6 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑6 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
步行cgn8 小时前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc
jason成都9 小时前
RTKLIB 的 Java 移植版来了:rtklib-java v3.3.0 功能全景
java·gnss·rtklib·rtklib_java
LazyHunter99 小时前
JDK 28:Java 下一步方向解析与新特性展望
java·jdk