当前位置: 首页 > news >正文

jpa适配mysql切换达梦可能的坑

1、liquibase脚本

(1)达梦数据库不支持,修改字段varchar改成blob

<changeSet author="ly" id="v3.0_4_202307111505_101"><renameColumn tableName="PC_SS_ZRQD" oldColumnName="BHNR" newColumnName="BHNR" columnDataType="TEXT"remarks="包含内容(信息项)"/>
</changeSet>

可以增加数据库判断,mysql就是text,达梦就修改成varchar(5000)

<changeSet author="ly" id="v3.0_4_202307111505_101"><preConditions onFail="MARK_RAN"><columnExists tableName="PC_SS_ZRQD" columnName="BHNR"/><dbms type="mysql"/></preConditions><renameColumn tableName="PC_SS_ZRQD" oldColumnName="BHNR" newColumnName="BHNR" columnDataType="TEXT"remarks="包含内容(信息项)"/>
</changeSet>

2、mysql的char(32)和达梦char(32)有区别

mysql如果字段定义是char(32),如果内容是1,数据表存的就是1

达梦如果字段定义是char(32),如果内容是1,数据表存的就是1加31个空格

所以对于变长的字段,达梦建议改成varchar(32)

3、group by区别

(1)下面sql达梦会报错

SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId

mysql不会报错,达梦会报错

达梦的select返回值,必须在group by里面,需要改成

SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh

(2)select zd ,count(1) from test

mysql不会报错,达梦会报错

达梦不支持select 字段1,字段2,count(1),不带group by的写法

4、order by区别

SELECT t1.mbbh,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh order by t1.cjsj

这个sql,mysql支持,达梦会报错。使用group by时,达梦的order by字段,必须在select中

SELECT t1.mbbh,max(t1.cjsj) as cjsj,count(1) from Sqd GROUP BY t1.mbId,t1.mbbh order by cjsj

原因:达梦执行过程

1、先执行group by,把结果生成一个临时表

2、order by是对临时表进行排序

所以,如果select 不包含排序字段会报错

5、索引唯一校验不同

达梦数据库索引名称,要全库唯一,不是表维度唯一

例如,在mysql存在数据表, zyxx,   mlxx2个表,对id都建了id_index索引,在mysql不会报错

在达梦数据库会报错

6、distinct和order by 一起使用

达梦  distinct和order by 一起使用, 如果查询结果不包含order by字段会报错

select distinct a from test order by b

mysql不报错,达梦报错。

达梦语法:select distinct a,b from test order by b

7、liquibase的text字段

text在myql库中,建表时字段类型是text, 在达梦数据库建表时是clob类型。

如果字段查询用到了in、like等,达梦的clob在jpa中不支持,会报类型错误。 mysql不会报错

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • IBM 撤出背后:国内技术人如何突围?
  • 第157天: 安全开发-Python 自动化挖掘项目SRC 目标FOFA 资产Web 爬虫解析库
  • 系统架构设计师 云原生架构篇
  • java框架
  • 关于若尔当矩阵中过渡矩阵的求法
  • 记录一下gitlab社区版的安装教程
  • 几种手段mfc140u.dll丢失的解决方法,了解mfc140u.dll
  • 我的AI工具箱Tauri版-FunAsr音频转文本
  • 什么是SERP?有什么用?
  • 视频服务器:GB28181网络视频协议
  • 【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)
  • MongoDB事务机制
  • 88年,36岁,中年失业在家,如何缓解焦虑?
  • MobileCLIP: Fast Image-Text Models through Multi-Modal Reinforced Training
  • 二叉树的层序遍历 II
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android Volley源码解析
  • Cookie 在前端中的实践
  • Java-详解HashMap
  • Laravel Mix运行时关于es2015报错解决方案
  • leetcode讲解--894. All Possible Full Binary Trees
  • PhantomJS 安装
  • vuex 学习笔记 01
  • yii2权限控制rbac之rule详细讲解
  • Zsh 开发指南(第十四篇 文件读写)
  • 程序员最讨厌的9句话,你可有补充?
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信小程序--------语音识别(前端自己也能玩)
  • 项目实战-Api的解决方案
  • 第二十章:异步和文件I/O.(二十三)
  • 进程与线程(三)——进程/线程间通信
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #Linux(帮助手册)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (09)Hive——CTE 公共表达式
  • (2015)JS ES6 必知的十个 特性
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • .chm格式文件如何阅读
  • .net 4.0发布后不能正常显示图片问题
  • .net Application的目录
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET DataGridView数据绑定说明
  • .net 中viewstate的原理和使用
  • .net(C#)中String.Format如何使用
  • .NET正则基础之——正则委托
  • @Builder用法
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • [AAuto]给百宝箱增加娱乐功能
  • [Algorithm][综合训练][kotori和n皇后][取金币][矩阵转置]详细讲解