springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突

一、驱动与连接配置

  1. 更换JDBC驱动
    在pom.xml中移除MySQL驱动,添加达梦驱动(版本根据DM数据库选择):
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver</artifactId><version>8.1.2.141</version> <!-- 按实际版本调整 -->
</dependency>
  1. 修改数据源配置
#application.yml 中配置达梦连接(注意模式名大小写敏感):
spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://IP:PORT?schema=MD_TEST  # 显式指定模式username: your_userpassword: your_pwd

二、解决SQL语法兼容性问题

  1. 分页查询调整
    问题:MySQL的LIMIT语法在达梦中不兼容。
    方案:配置MyBatis-Plus使用达梦的分页方言
    在配置类中添加:
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 指定达梦数据库类型interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));return interceptor;
}
  1. 函数替换
    在这里插入图片描述

三、替换后启动的出错问题

  1. 在切换到达梦的驱动和数据连接后启动出错,无效的模式名[MD_TEST]
无效的模式名[MD_TEST]at dm.jdbc.driver.DBError.throwException(SourceFile:744)at dm.jdbc.a.a.y.r(SourceFile:623)at dm.jdbc.a.a.f.r(SourceFile:138)at dm.jdbc.a.a.y.z(SourceFile:555)at dm.jdbc.a.a.y.L(SourceFile:536)at dm.jdbc.a.a.a(SourceFile:267)at dm.jdbc.a.a.a(SourceFile:802)at dm.jdbc.driver.DmdbStatement.executeInner(SourceFile:771)

问题:找不到在达梦数据库中创建的模式(类型MySQL数据库)

#在 application.yml 中配置模式名,避免硬编码:
mybatis-plus:global-config:db-config:table-prefix: MD_TEST.  # 末尾的点不能少# 或指定schema(根据版本选择)schema: MD_TEST
  1. 自定义xml中的sql问题
### Error querying database.  Cause: dm.jdbc.driver.DMException:2,12[`]附近出现错误: 
语法分析出错
### The error may exist in file [D:\projectGit\system\target\classes\mybatis\system\MenuMapper.xml]
### The error may involve com.system.dao.MenuDao.listCurrentUserTopMenu
### The error occurred while executing a query
### SQL: select         sm.`menu_id`,sm.`name`         from sys_menu sm         inner join sys_role_menu srm on srm.menu_id = sm.menu_id         inner join sys_user_role sur on sur.role_id = srm.role_id and sur.user_id = ?      order by sm.order_num,sm.menu_id
### Cause: dm.jdbc.driver.DMException:2,12[`]附近出现错误: 
语法分析出错
; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException:2,12[`]附近出现错误: 
语法分析出错
org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: dm.jdbc.driver.DMException:2,12[`]附近出现错误: 
语法分析出错
### The error may exist in file [D:\projectGit\system\target\classes\mybatis\system\MenuMapper.xml]
### The error may involve com.system.dao.MenuDao.listCurrentUserTopMenu
### The error occurred while executing a query
### SQL: select         sm.`menu_id`,sm.`name`         from sys_menu sm         inner join sys_role_menu srm on srm.menu_id = sm.menu_id         inner join sys_user_role sur on sur.role_id = srm.role_id and sur.user_id = ?         where sm.parent_id = 155 and sm.type != 2         order by sm.order_num,sm.menu_id
### Cause: dm.jdbc.driver.DMException:2,12[`]附近出现错误: 语法分析出错
; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException:2,12[`]附近出现错误: 语法分析出错

错误原因分析
① 反引号(`)问题:

sm.`menu_id`, sm.`name`  -- 达梦不支持MySQL的反引号

达梦数据库不支持MySQL的反引号标识符,需要改为双引号或直接去掉,最好是直接取消反引号
② 模式名大小写问题
达梦对大小写敏感,如果迁移时表名/字段名保留了小写,查询时必须用双引号+小写引用。

  1. 模式取名名称出错
025-07-02 11:40:47.147 [http-nio-12001-exec-2] ERROR c.k.c.e.GlobalExceptionHandler - 【全局异常处理】Exception:
### Error querying database.  Cause: dm.jdbc.driver.DMException:3,11[-]附近出现错误: 
语法分析出错
### The error may exist in com/system/dao/UserDao.java (best guess)
### The error may involve com.system.dao.UserDao.selectOne
### The error occurred while executing a query
### SQL: SELECT   user_id,username,nickname,photo,mobile,status,client_type,user_type,join_id   FROM MD-TEST.sys_user   WHERE  del_flag=0  AND (user_id = ?)
### Cause: dm.jdbc.driver.DMException:3,11[-]附近出现错误: 
语法分析出错
; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException:3,11[-]附近出现错误: 
语法分析出错
org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: dm.jdbc.driver.DMException:3,11[-]附近出现错误: 
语法分析出错
### The error may exist in com/system/dao/UserDao.java (best guess)
### The error may involve com.system.dao.UserDao.selectOne
### The error occurred while executing a query
### SQL: SELECT   user_id,username,nickname,photo,mobile,status,client_type,user_type,join_id   FROM MD-TEST.sys_user   WHERE  del_flag=0  AND (user_id = ?)
### Cause: dm.jdbc.driver.DMException:3,11[-]附近出现错误: 
语法分析出错
; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException:3,11[-]附近出现错误: 

这个错误是由于达梦数据库对标识符(表名、模式名)的命名规则和引用方式与MySQL不同导致的。具体来说,问题出在模式名 MD-TEST 中的连字符 - 上。

1.模式名中的连字符问题:FROM MD-TEST.sys_user 达梦数据库将 MD-TEST 中的 - 解释为减号运算符,而不是模式名的一部分。

2.大小写敏感问题:达梦数据库默认标识符是大小写敏感的,如果创建时使用了小写或混合大小写,必须使用双引号包裹。

  1. 达梦数据库标识符命名规则

① 允许字符:字母(A-Z, a-z)、数字(0-9)、下划线(_)、中文(需要数据库支持中文字符集)

②禁止字符:连字符(-)、空格 、其他特殊字符(@, #, $ 等)

③大小写处理:不加引号的标识符会被转换为大写,包含小写字母或特殊字符的标识符必须用双引号包裹

  1. INFORMATION_SCHEMA 系统视图
## Error querying database.  Cause: dm.jdbc.driver.DMException:1 行附近出现错误:
无效的模式名[INFORMATION_SCHEMA]
### The error may exist in file [D:\projectGit\.system\target\classes\mybatis\share\DataBaseTableDao.xml]
### The error may involve com.share.dao.DataBaseTableDao.exitsTableCreateSql
### The error occurred while executing a query
### SQL: SELECT count(1) FROM information_schema.tables WHERE table_schema=? AND table_name = ?
### Cause: dm.jdbc.driver.DMException:1 行附近出现错误:
无效的模式名[INFORMATION_SCHEMA]
; uncategorized SQLException; SQL state [3F000]; error code [-2103];1 行附近出现错误:
无效的模式名[INFORMATION_SCHEMA]; nested exception is dm.jdbc.driver.DMException:1 行附近出现错误:
无效的模式名[INFORMATION_SCHEMA]
org.springframework.jdbc.UncategorizedSQLException: 
### Error querying database.  Cause: dm.jdbc.driver.DMException:1 行附近出现错误:
无效的模式名[INFORMATION_SCHEMA]

这个错误是因为达梦数据库没有 INFORMATION_SCHEMA 系统视图,这与 MySQL 不同。达梦使用自己的元数据查询方式。

① 达梦数据库的元数据查询:
达梦数据库不使用 INFORMATION_SCHEMA,而是有自己的系统表
达梦的元数据存储在 SYSTABLES、SYSOBJECTS 等系统表中

② 原MySQL查询

SELECT count(1) 
FROM information_schema.tables 
WHERE table_schema = ? AND table_name = ?

修改后:

    <select id="exitsTableCreateSql" resultType="int">SELECT COUNT(1) FROM ALL_TABLES WHERE OWNER = UPPER(#{dataBaseName}) AND TABLE_NAME = UPPER(#{tableName}) #使用 UPPER() 函数确保参数匹配</select>

如果还需要其他元数据查询,参考达梦官方文档《DM8系统管理员手册》中的"数据字典"章节

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 使用快速入门:从基础命令到仓库管理全解析

Git 使用快速入门&#xff1a;从基础命令到仓库管理全解析 在软件开发和团队协作的世界里&#xff0c;版本控制系统是不可或缺的工具。而 Git&#xff0c;凭借其强大的功能、高效的性能以及分布式的特性&#xff0c;已然成为当下最受欢迎的版本控制系统。无论是个人开发者管理项…

Go语言项目工程化 —— 日志、配置、错误处理规范

在Go语言中&#xff0c;项目工程化的日志、配置、错误处理规范是保障项目可维护性、可观测性与健壮性的核心实践之一。本章将从三个方面进行详解&#xff1a; 一、日志规范 1. 日志的重要性 • 问题排查的唯一“现场还原”• 性能瓶颈的定位手段• 安全审计的依据 2. 日志库…

day58python打卡

知识点回顾&#xff1a; 时序建模的流程时序任务经典单变量数据集ARIMA&#xff08;p&#xff0c;d&#xff0c;q&#xff09;模型实战SARIMA摘要图的理解处理不平稳的2种差分 n阶差分---处理趋势季节性差分---处理季节性 建立一个ARIMA模型&#xff0c;通常遵循以下步骤&…

centos9安装

centos-stream-9-stream-BaseOS-x86_64-iso安装包下载_开源镜像站-阿里云 用NAT 默认root用户不能登录 vim /etc/ssh/sshd_config PermitRootLogin yes 去掉注释,改为yes 这样root用户可以登录 因为用的NAT模式 这样可以通过宿主机的50022端口访问虚拟机 宿主机 ipconfig…

60天python训练营打卡day‘47

学习目标&#xff1a; 60天python训练营打卡 学习内容&#xff1a; DAY 47 注意力热图可视化 昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 学习时间&#xff1a; 2025.06.30 浙大疏锦行

GO字符串处理面试题及参考答案(精选60道题)

如何将一个字符串反转?实现 Reverse("abc") => "cba" 在Go语言中实现字符串反转需要考虑字符串的编码方式。Go语言的字符串是基于UTF-8编码的,而UTF-8是一种变长编码,每个Unicode码点(rune)可能由1到4个字节表示。因此,简单地按字节反转会破坏多字…

在线swagger 导出 PDF文档

1.获取swagger文档json 点击左上角的url&#xff0c;下载json文件 2.apifox转换JSON到Markdown json文件导入 MD文件导出 3.用Mark Text 导入后转换成PDF

【Linux基础知识系列】第四十篇 - 定制彩色终端与 Prompt

在使用Linux终端时&#xff0c;一个清晰、易读且个性化的命令提示符&#xff08;Prompt&#xff09;可以显著提升工作效率和用户体验。通过定制终端的颜色和提示符&#xff0c;用户可以更直观地获取系统信息&#xff0c;同时也能让终端界面更具个性化。本文将介绍如何通过PS1变…

Spark从入门到熟悉(篇二)

本文介绍Spark的RDD编程&#xff0c;并进行实战演练&#xff0c;加强对编程的理解&#xff0c;实现快速入手 知识脉络 包含如下8部分内容&#xff1a; 创建RDD 常用Action操作 常用Transformation操作 针对PairRDD的常用操作 缓存操作 共享变量 分区操作 编程实战 创…

ADSP-CM408CSWZ-BF高精度ADI双核精密控制神器 赋能工业4.0核心系统!

ADSP-CM408CSWZ-BF&#xff08;ADI&#xff09;产品解析与推广文案 1. 产品概述 ADSP-CM408CSWZ-BF 是 Analog Devices Inc.&#xff08;ADI&#xff09; 推出的一款 混合信号控制处理器&#xff0c;属于 ADSP-CM40x系列&#xff0c;集成了 双核ARM Cortex-M4 高精度ADC&…

Unity GPU Timeline性能热点分析与优化指南

一、GPU Timeline技术背景与性能挑战 1. GPU Timeline核心架构 层级组件性能影响应用层PlayableGraph指令生成效率驱动层CommandBuffer提交开销硬件层GPU管线并行利用率 2. 典型性能瓶颈 图表 代码 下载 性能问题 过度绘制 资源切换 同步等待 FillRate受限 状态切换…

CAN转Modbus TCP网关赋能食品搅拌机智能协同控制

在食品搅拌机的自动化控制系统中&#xff0c;设备通信协议的多样性给系统集成带来挑战。JH-CAN-TCP疆鸿智能CAN主站转Modbus TCP从站的网关&#xff0c;成为连接西门子PLC与伺服系统的关键桥梁。 西门子PLC常采用Modbus TCP协议&#xff0c;用于实现与上位机、人机界面等设备的…

30套精品论文答辩开题报告PPT模版

毕业论文答辩开题报告PPT模版&#xff0c;会议报告&#xff0c;座谈交流&#xff0c;工作总结&#xff0c;工作汇报&#xff0c;开题报告PPT模版&#xff0c;开题报告论文答辩PPT模版&#xff0c;扁平论文开题报告PPT模版&#xff0c;毕业论文答辩开题报告PPT模版&#xff0c;极…

IDA系列--插件开发-Python版

IDA系列–插件开发-Python版 1. 概述 本文章详细介绍了基于Python语言的IDA Pro插件开发技术。IDA Pro作为业界领先的反汇编器和逆向工程平台,其插件架构允许开发者通过Python脚本扩展核心功能。本文涵盖开发环境配置、核心API使用、典型开发流程及最佳实践。 2. 开发环境配…

⚙️ 深度学习模型编译器实战:解锁工业级部署新范式​​—— 基于PyTorch-MLIR的全流程优化指南(开源工具链集成)​​

✅ ​​权威实验数据​​&#xff08;来源&#xff1a;MLIR官方GitHub&#xff09; ResNet-50推理时延&#xff1a; • PyTorch原生&#xff1a;32ms → MLIR优化后&#xff1a;6.3ms &#xff08;加速比​​5.1​​&#xff09; 峰值显存占用下降&#xff1a;​​1.8GB → 420…

Kafka日常运维命令总结

一、集群管理 前台启动Broker bin/kafka-server-start.sh <path>/server.properties关闭方式&#xff1a;Ctrl C 后台启动Broker bin/kafka-server-start.sh -daemon <path>/server.properties关闭Broker bin/kafka-server-stop.sh二、Topic管理 操作命令创建To…

如何训练一个 Reward Model:RLHF 的核心组件详解

Reward Model&#xff08;奖励模型&#xff09;是 RLHF 的核心&#xff0c;决定了模型“觉得人类偏好什么”的依据。本文将系统介绍如何从零开始训练一个 reward model&#xff0c;包括数据准备、模型结构、损失函数、训练方法与注意事项。 什么是 Reward Model&#xff1f; …

FrozenBatchNorm2d 详解

FrozenBatchNorm2d 详解 基本概念 FrozenBatchNorm2d 是 BatchNorm2d 的一种特殊变体,主要用于在模型训练或推理过程中固定批量统计量(running mean 和 running variance)以及仿射参数(weight 和 bias)。这种冻结操作在以下场景中特别有用: 模型微调(Fine-tuning):当…

Helix Toolkit 在 WPF 中加载带贴图素材的模型

引言 在现代应用程序开发中,将 3D 模型集成到桌面应用中变得越来越普遍。无论是建筑可视化、产品设计还是游戏开发,WPF(Windows Presentation Foundation)结合 Helix Toolkit 提供了一个强大的解决方案来展示和操作 3D 内容。本文将指导你如何使用 Helix Toolkit 加载 .ob…

Http、Ftp、Dns和Dhcp服务器搭建

服务器搭建的要求 ①搭建Web服务器 要求做一个简单的主页&#xff08;index.html&#xff09;以便测试 web 服务&#xff0c;服务器&#xff08;Linux 平台&#xff09;ip 地址配置&#xff1a;10.28.110.251,255.255.255.0&#xff0c;域名为&#xff1a;www.xxx.cie.net。 …