【DM】达梦数据库与MySQL适配

这篇具有很好参考价值的文章主要介绍了【DM】达梦数据库与MySQL适配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、达梦入门技术文档

新手直接看达梦入门技术文档即可

达梦兼容mysql,数据库,数据库,mysql,sql

二、达梦数据库

1、介绍

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:通用性、高性能、高可用、跨平台、高可扩展

2、与MySQL的区别

(1)创建表的时候,不支持在列的后面直接加comment注释,使用 COMMENT ON IS 代替,如:

   COMMENT ON TABLE xxx IS xxx
   COMMENT ON COLUMN xxx IS xxx

(2)不支持 date_sub 函数,使用 dateadd(datepart,n,date) 代替,其中,datepart可以为:year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh), minute(mi,n), second(ss,s), millisecond(ms),例子:

select dateadd(month, -6, now());
select dateadd(month, 2, now());

(3)不支持 date_format 函数,它有三种代替方法:

A: 使用 datepart 代替:语法:datepart(datepart, date),返回代表日期的指定部分的整数,datepart可以为:year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh), minute(mi,n),second(ss,s), millisecond(ms),例子:

select datepart(year, '2023-04-13 08:45:00'); --2023
select datepart(month, '2022-12-13 08:45:00'); --12

B: 使用 date_part 代替,功能和 datepart 一样,写法不同,参数顺序颠倒,且都要加引号,例子:

select date_part('2023-12-13 08:45:00', 'year');--2023
select date_part('2022-12-13 08:45:00', 'mm'); -- 12

C: 使用 extract 代替,语法:extract(dtfield from date),从日期类型date中抽取dtfield对应的值,dtfield 可以是 year,month,day,hour,minute,second,例子:

select extract(year from  '2023-12-13 08:45:00'); --2023
select extract(month from  '2022-12-13 08:45:00'); --12

(4)不支持 substring_index 函数, 使用 substr / substring 代替,语法:

substr(char[,m[,n]])
substring(char[from m[ for n]])

(5)不支持 group_concat 函数,使用 wm_concat 代替,例子:

select wm_concat(id) as idstr from persion ORDER BY id ;

(6)不支持 from_unixtime 函数,使用 round 代替,语法:

round(date[,format])

(7)不支持 case-when-then-else ,例如:

select case  when id = 2 then "aaa" when id = 3 then "bbb" else "ccc" end as test from (select id from person) tt;

(8)current_timestamp 的返回值带有时区,例子:

select current_timestamp();
2023-04-37 14:34:18.433839 +08:00

3、数据迁移

三、JAVA项目连接DM数据库

1、引入依赖

<dependency>
	<groupId>com.dameng</groupId>
    <artifactId>Dm8JdbcDriver18</artifactId>
    <version>8.1.1.49</version>
</dependency>

2、Nacos中配置

达梦兼容mysql,数据库,数据库,mysql,sql

四、MySQL转达梦sql注意事项

1、``不可以用

`type` 需要去掉``

2、达梦数据库错误代码-4080:不是 GROUP BY 表达式

1、GROUP BY 和 ORDER BY 一起使用时,ORDER BY 要在 GROUP BY 的后面。
2、在 select 需要查询的语句中选中的字段,必须出现在 GROUP BY 子句中
使用 GROUP BY 要注意以下问题:
1.在 GROUP BY 子句中的每一列必须明确地命名属于在 FROM 子句中命名的表的一列。分组列的数据类型不能是多媒体数据类型;
2.分组列不能为集函数表达式或者在 SELECT 子句中定义的别名;
3.当分组列值包含空值时,则空值作为一个独立组;
4.当分组列包含多个列名时,则按照 GROUP BY 子句中列出现的顺序进行分组;
5. GROUP BY 子句中至多可包含 255 个分组列; 6. ROLLUP\CUBE\GROUPING SETS 组合不能超过 9 个。

3、达梦数据库报错「-2106」:无效的表或视图名

1、确认程序连接达梦的用户名,确认该用户是否有select这张表的权限;
2、检查这张表的所属模式,如果模式名与用户名相同,可以用select * from 表名;如果模式名与用户名不同,需要使用 select * from 模式名.表名; 的语法。
3、nacos中url使用schema指定模式:

注意:模式不可以使用-连字符,最好使用下划线

达梦兼容mysql,数据库,数据库,mysql,sql

4、DATE_SUB函数

expr 在达梦中需要加单引号,建议使用到这类函数时数字加上单引号。

count(YEAR(create_time) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR)) OR NULL) as lastYearNum
改为:
count(YEAR(create_time) = YEAR(DATE_SUB(NOW(),INTERVAL '1' YEAR)) OR NULL) as lastYearNum

5、SUM 的参数必须为数值类型,这里做了逻辑运算就不是数值了。

达梦兼容mysql,数据库,数据库,mysql,sql

6、yearweek 函数

达梦数据库没有 yearweek ,使用 year 函数 week 函数 结合

select yearweek('2022-01-01'); //mysql写法
select concat(year('2022-01-01'), week('2022-01-01'));//达梦写法

7、count中进行比较,导致错误

达梦兼容mysql,数据库,数据库,mysql,sql
如何修改:使用sum即可
达梦兼容mysql,数据库,数据库,mysql,sql

8、迁移报错

达梦兼容mysql,数据库,数据库,mysql,sql

解决方案:迁移外键的时候,取消“保留引用表原有的模式信息”功能,选择迁移对象->点击转换

达梦兼容mysql,数据库,数据库,mysql,sql

9、MySQL 的ON DUPLICATE KEY UPDATE语句在达梦数据库中使用的方式

10、无法解析的成员访问表达式[UUID]

达梦兼容mysql,数据库,数据库,mysql,sql
解决方案:
1、在imp业务层设置了uuid
2、在 DM 数据库中可以使用以下两种方法生成 UUID:

使用 SYS_GUID() 函数生成 UUID,该函数返回一个唯一标识符,可以作为列的默认值或者手动插入。
代码示例:

CREATE TABLE your_table (
  id VARCHAR2(40) DEFAULT SYS_GUID() PRIMARY KEY,
  ...
);

使用 rawtohex(sys_guid()) 函数将 UUID 转换为字符串,然后插入表中。
代码示例:

INSERT INTO your_table (id, ...) VALUES (rawtohex(sys_guid()), ...);

注意,使用第二种方法时,需要将 UUID 转换为字符串,因为 DM 数据库中没有原生的 UUID 类型。

11、Activiti7.X支持达梦数据库

注意事项持续更新中…

达梦兼容mysql,数据库,数据库,mysql,sql文章来源地址https://www.toymoban.com/news/detail-621477.html

到了这里,关于【DM】达梦数据库与MySQL适配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 达梦数据库(dm8)导出sql文件

    1.新建迁移工程 2.右键进行新建迁移 3.选择DM== SQL 后进行下一步 4.输入口令后继续下一步 5.定义脚本文件可选择自己新建的sql空文件,编码使用UTF-8 选择自己要导出的模式 7.选择导出的表 使用反选可以进行全选 8.点击完成进行迁移 也可以使用其他方式进行导出,如DM管理工具

    2024年02月11日
    浏览(32)
  • 达梦数据库(DM8)常用SQL学习

    达梦产品手册 从输出结果看出,用户状态 account_status 为 open,输出的时间为用户的创建时间。 注意:windows系统在DM管理工具中使用该命令无法完成用户切换,直接断开登录后重新连接,更换登录用户即可。 通过触发器脚本实现 解析 UPDATE_TIME_CUSTOM_NAME:触发名称 DEV: 模式名

    2024年02月01日
    浏览(30)
  • dmfldr-快速装载-载入(DM8:达梦数据库)

    DM 提供了快速装载工具:dmfldr; 通过使用快速装载工具能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格式载出到文本文件中。 dmfldr 在一台机器上启动即可,独立完成快速装载任务,简单高效。 其中,表

    2024年02月06日
    浏览(27)
  • 开发 | JAVA连接达梦数据库(DM8)

    本文参考文献 https://eco.dameng.com/docs/zh-cn/start/java-development.html https://eco.dameng.com/docs/zh-cn/app-dev/index.html 本文通过以下方式实现Java程序与DM8数据库的交互 使用JDBC接口(不用框架,最简单) 使用MyBatis框架 使用Spring框架 使用SpringBoot Jdbc 框架 Java的软件开发工具包(SDK) JDK(Ja

    2024年02月07日
    浏览(49)
  • 达梦数据库——数据迁移sqlserver-dm报错问题整理

    报错情况一:Sql server迁移达梦连接报错’驱动程序无法通过使用安全套接字Q层(SSL)加密与SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferencesITLS127‘ 原因:历史版本的SOL SERVER服务端默认使用TLS1.0版本协议对外提供服务,因安全问题

    2024年02月19日
    浏览(38)
  • DM8:达梦数据库开启SQL日志sqllog

    在使用数据库过程中,有时候想要查看数据库执行的SQL日志,由于V$SESSIONS 系统视图默认保留10000条,不满足需求,可以配置开启SQLLOG; 登陆达梦数据库管理工具或 disql 执行命令 开启后注意观察数据库log目录的dmsql开头的日志文件,是否达到256MB后正常切换,达到20个日志文件

    2024年02月10日
    浏览(38)
  • springboot使用达梦数据库(DM8)整合MybatisPlus

    在idea中开发spring boot项目,用到的数据库是达梦数据库,想要使用 MybatisPlus 自动生成实体类和服务,并且通过 MybatisPlus 完成一些简单的数据库CRUD ps:这里的 MybatisPlus 版本必须要是3.0以上 2.1、pom ps:其中需要将达梦数据库的依赖添加到指定目录下,不然达梦的依赖无法生效

    2024年02月16日
    浏览(37)
  • 【Database-02】达梦数据库 - DM Manager管理工具安装

    DM Manager是达梦数据库自带的图形化界面管理工具,在安装达梦数据库的时候就会自动安装。 Linux环境,默认安装路径为:达梦安装目录/tool/manager,如果Linux是安装GUI,那么就可以直接启动使用。 实际大部分使用过程中,是在windows环境另外再安装一个达梦数据库客户端。 从达

    2024年02月15日
    浏览(31)
  • 达梦数据库与mysql的区别

    达梦数据库作为一款国产替代数据库,基于oracle内核的关系型数据库,已RDBMS为核心,SQL为标准,支持SQL92、JDBC等国际标准。硬件上做到了兼容X86、ARM等各种体系,各平台的数据存储和通信结构一致,做到不挑硬件。 软件上实现平台无关性,支持Win系列、LIN系列、Unix等主流操

    2024年02月09日
    浏览(29)
  • 达梦数据库报dm.jdbc.driver.DMException: 网络通信异常

    1.注意url最后面的下划线\\\"/\\\"要去掉 2.改成 1.请仔细检查username、password、driver-class-name、url中IP地址和冒号\\\":\\\"后面的端口号是否正确,特别是IP地址更换环境容易忘记修改。

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包