记录仿钉钉审批流(将MySQL换成Oracle)走过的坑

需求:实现审批流程

在Gitee上发现了一个功能还OK的项目,于是就clone下来了(如下图)

 原项目用MySQL很好启动,B站上作者还录制了视频,可以去学习

 这里主要记录将MySQL换成Oracle出现的问题

首先,查看Oracle版本

pom中引入依赖(注意 dependencyManagement 和 dependencies 别搞错了,这里我只在dependencyManagement 中写了,dependencies 中没有引入,导致yml中Oracle驱动一直报错)

<dependency>
  <groupId>com.oracle.ojdbc</groupId>
  <artifactId>ojdbc8</artifactId>
</dependency>

 这个项目作者引入的Oracle 驱动依赖版本为

<oracle.version>21.5.0.0</oracle.version>

我换成

<oracle.version>19.3.0.0</oracle.version>

yml中数据源配置如下

#连接Oracle
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@192.168.70.232:1521/ORCL
    username: test
    password: test

重点(坑)来了

clone 下来的项目中只有MySQL的建表SQL文件(如下图)

如果直接在Oracle中执行dingding.sql文件会有错误

这里说说我的解决方式:

先用MySQL,将dingding.sql在MySQL中执行,会先建立六张表

项目中也先用MySQL,启动项目,项目启动成功后,数据库中一共有38张表

接下来就是使用Navicat 将 MySQL 数据传输到 Oracle(如下如,记得在高级中勾选转换对象名为大写)

这里如果选择38张表,会报错,我是先把 act_ge_bytearray 去掉了,然后再开始传输,

这里报了  ORA-01408:such column list alread indexed 不过我没管(不知道会不会有问题)

然后 单独 传输 act_ge_bytearray 这张表 这里会报  ORA-02270: no matching unique or primary key for this column-list 这里我也没管(不知道会不会有问题)

 等38张表创建完成后

这里在说说其他坑,如果只传输dingding.sql中的六张表到Oracle中,其他表等启动项目自动创建,但是这里依旧报错(如不能创建 ACT_GE_PROPERTY),网上找了很久也没找到解决方案(URL后面加参数nullCatalogMeansCurrent=true也没解决)

所以我只能所有表都通过数据传输来创建

然后就是激动人心的时刻:启动项目了

项目确实是正常启动了,但是但是但是,新建一个分组报错了(ID为null,无法插入数据)

如果是MySQL,插入时ID会自增,但是Oracle好像没有,这里我也不太清楚,我也很少使用Oracle

解决方式:

给 form_groups    template_group 这两个表创建序列和触发器

(我目前只给这两个表创建了)

-- 创建序列
create sequence seq_form_groups
increment by 1
start with 1
nomaxvalue
nominvalue
cache 20;

-- 创建触发器
create or replace trigger form_groups_tr
before insert on form_groups for each row
begin
select seq_form_groups.nextval into :new.group_id from dual;
end form_groups_tr;

-- 创建序列
create sequence seq_template_group
increment by 1
start with 1
nomaxvalue
nominvalue
cache 20;

-- 创建触发器
create or replace trigger template_group_tr
before insert on template_group for each row
begin
select seq_template_group.nextval into :new.id from dual;
end template_group_tr;

然后就可以新增分组了

但是新建分组,新建表单之后,走审批流程,·待我处理·那里查询不到数据(idea控制台会有错误信息,这个具体报错信息忘了,我就记得跟着错误信息,查到act_ru_task 这张表了,MySQL中字段大部分都是varchar,但Oracle中大部分但是nvarchar,我将nvarchar都改成varchar2了,还有就是DESCRIPTION_这个字段,Oracle中好像是NCLOB类型,报错中也有NCLOB信息,直接将NCLOB改成VARCHAR2会报错,先将DESCRIPTION_字段删除掉,保存,在新建一个DESCRIPTION_ 字段,类型选为VARCHAR2(4000),然后再项目中新建审批流程,没有发现什么错误了)

项目中使用序列和触发器生成ID以后不知道会不会有问题,其他还有很多表应不应该创建序列和触发器?如果需要,工作量有点大,目前还没有很好的解决方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/203023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用java实现拼图小游戏

1、了解拼图游戏基本功能&#xff1a; 拼图游戏内容由若干小图像块组成的&#xff0c;通过鼠标点击图像块上下左右移动&#xff0c;完成图像的拼凑。 2、拼图游戏交互界面设计与开发&#xff1a; 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

STM32通讯设计

STM32通讯设计 通讯流程STM32程序 通讯流程 1.使用HT2202芯片配置为主机接收&#xff08;轮询模式&#xff09;。 2.将STM32芯片配置为从机发送&#xff0c;中断模式下发送固定数据。 3.如果HT2202芯片能够收到STM32发送的数据则通讯成功&#xff0c;否则通讯失败。 STM32程序…

如何使用金狮视频助手合并两个视频?

如果您需要将两个或多个精彩的视频合并为一个视频&#xff0c;或者它们具有不同的视频格式想合并为一样的视频格式&#xff0c;那么您可以使用视频合并软件来完成。 金狮视频助手是一款合并视频的出色工具&#xff0c;可以在不更改原始文件的情况下合并各种格式的视频。您还可…

mongodb基本操作命令

mongodb快速搭建及使用 1.mongodb安装1.1 docker安装启动mongodb 2.mongo shell常用命令2.1 插入文档2.1.1 插入单个文档2.1.2 插入多个文档2.1.3 用脚本批量插入 2.2 查询文档2.2.1 排序查询2.2.1 分页查询 前言&#xff1a;本篇默认你是对nongodb的基础概念有了了解&#xff…

【Java学习笔记】 74 - 本章作业

1.验证电子邮件格式是否合法 规定电子邮件规则为 1.只能有一个 2. 前面是用户名,可以是a-z A-Z 0-9 _ - 字符 3. 后面是域名&#xff0c;并且域名只能是英文字母&#xff0c;比如sohu.com或者tsinghua.org.cn 4.写出对应的正则表达式&#xff0c;验证输入的字符串是否为满…

获取Spring容器Bean工具类

获取Spring容器Bean工具类 1、创建SpringUtils工具类2、注册 SpringUtils工具类3、如果打包的是War方式&#xff0c;可能上面两个注册工具类的方法都没用 1、创建SpringUtils工具类 public class SpringUtils implements ApplicationContextAware {private static Application…

【神经网络】AlexNet

来源 2012年在全球知名的图像识别竞赛 ILSVRC 中&#xff0c;AlexNet 横空出世&#xff0c;直接将错误率降低了近 10 个百分点&#xff0c;这是之前所有机器学习模型无法做到的。 网络结构 AlexNet整体的网络结构包括&#xff1a;1个输入层&#xff08;input layer&#xff…

基于深度学习的表情动作单元识别综述

论文标题&#xff1a;基于深度学习的表情动作单元识别综述 作者&#xff1a;邵志文1&#xff0c;2&#xff0c;周 勇1&#xff0c;2&#xff0c;谭 鑫3&#xff0c;马利庄3&#xff0c;4&#xff0c;刘 兵1&#xff0c;2&#xff0c;姚 睿1&#xff0c;2 发表日期&#xff1a…

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

【攻防世界-misc】CatCatCat

1.下载附件并解压至桌面&#xff0c; 包含一张图片&#xff0c;一个txt文件&#xff0c;将图片复制到kali桌面上&#xff0c;使用strings命令查看该图片内容是否包含flag字符&#xff0c;得到的内容是密码为&#xff1a;catflag 在查看txt文件时&#xff0c;可以看到在文件名命…

Linux常用基础命令及重要目录,配置文件功能介绍

目录 一&#xff0c;Linux常用必备基础命令 1&#xff0c;网络类命令 2&#xff0c;文件目录类命令 3&#xff0c;操作类命令 4&#xff0c;关机重启命令 5&#xff0c;帮助命令 6&#xff0c;查看显示类命令 7&#xff0c;命令常用快捷键 二&#xff0c;Linux重要目录…

论文阅读——SEEM

arxiv: 分割模型向比较灵活的分割的趋势的转变&#xff1a;封闭到开放&#xff0c;通用到特定、one-shot到交互式。From closed-set to open-vocabulary segmentation&#xff0c;From generic to referring segmentation&#xff0c;From one-shot to interactive segmentati…

手敲myarraylist,深入了解其运行逻辑

1、自定义MyArrayList类 该类里面基本有两个属性&#xff0c;一个是用来存放数据的数组&#xff0c;另外一个是用来描述已经存放数据的数量。同时设置arraylist表的默认长度为10&#xff1b;代码如下&#xff1a; public class MyArrayList {private int[] elem;private int u…

【HTML】VScode不打开浏览器实时预览html

1. 问题描述 预览HTML时&#xff0c;不想打开浏览器&#xff0c;想在VScode中直接实时预览 2. 解决方案 下载Microsoft官方的Live Preview 点击预览按钮即可预览

图面试专题

一、概念 和二叉树的区别&#xff1a;图可能有环 常见概念 顶点&#xff08;Vertex&#xff09;&#xff1a; 图中的节点或点。边&#xff08;Edge&#xff09;&#xff1a; 顶点之间的连接线&#xff0c;描述节点之间的关系。有向图&#xff08;Directed Graph&#xff09;&…

力扣题:字符的统计-12.1

力扣题-12.1 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;451. 根据字符出现频率排序 解题思想&#xff1a;统计字符出现的个数&#xff0c;进行排序即可 class Solution(object):def frequencySort(self, s):""":type s: str:…

Spine深入学习 —— 换装

Spine深入学习————换装 数据对象和实例对象的关系与区别 数据对象是无状态的&#xff0c;可在任意数量的骨架实例间共用。有对应实例数据的数据对象类名称以“Data”结尾&#xff0c;没有对应实例数据的数据对象则没有后缀&#xff0c;如附件、皮肤及动画。 实例对象有许…

UWB高精度定位系统项目源码

在现代社会中&#xff0c;精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求&#xff0c;超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…

机器学习:DBSCAN算法(效果比K-means好)

基本概念 核心对象&#xff1a;以点为圆心半径为r的圆&#xff0c;如果圈里面的样本点大于给定的阈值(minPts)&#xff0c;那么这个点就叫做核心点 直接密度可达&#xff1a;点p在q为圆心的圆内 密度可达&#xff1a; p1与p2直接密度可达&#xff0c;p2与p3直接密度可达&…

基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化

基于社区电商的Redis缓存架构 首先来讲一下 Feed 流的含义&#xff1a; Feed 流指的是当我们进入 APP 之后&#xff0c;APP 要做一个 Feed 行为&#xff0c;即主动的在 APP 内提供各种各样的内容给我们 在电商 APP 首页&#xff0c;不停在首页向下拉&#xff0c;那么每次拉的…