文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springboot项目中的mysql用国产数据库达梦替换的相关说明

2023-09-01 08:16

关注

一、 用“DM管理工具”的“管理用户”创建你需要用户,也是达梦的模式。

 用户的权限问题可以直接角色授权,方便一些。

 

二、借用达梦的“DM数据迁移工具”做数据库的表内容转移。

 1. 新建工程、新建迁移

编辑mysql的数据库源

编辑达梦的目的端数据库

 选择之前已建的用户模式

 选择要迁移的表,点击下一步,

 直接点完成。

 点“完成”时,若同步存在问题,则点击“详细信息进行查看”,针对性处理。点击“重新迁移出错的任务”,重新同步。

 三、以上的表的同步。接下来是事件。

 MySQL的事件功能同Oracle里面的JOB,作为定时任务使用。而达梦又类似于oracle。

 此次参考“DM7系统管理员手册.pdf”将mysql的事件转成达梦的job。

-- 启动代理作业/开始一个job
SP_INIT_JOB_SYS (1);
-- 要邮件推送,则增加创建操作员的动作
-- SP_CREATE_OPERATOR('xht', 1, 'xieht@zkxa.com.cn', '192.168.0.145');

-- 新建job并注释
call SP_CREATE_JOB('deleteLog', 1, 0, '', 0, 0, '', 0, '每分钟运行存储过程,做日志回滚。'); 
--开始配置job
call SP_JOB_CONFIG_START( 'deleteLog');
--新建job步骤
call SP_ADD_JOB_STEP('deleteLog', 'setp1', 0, 'call deleteLog();', 0, 0, 0, 0, NULL, 0);
--配置调度,从现在开始每天每间隔一分钟执行
call SP_ADD_JOB_SCHEDULE( 'deleteLog', 'setp1', 1 , 1, 1, 0, 1, CURTIME, '23:59:59', CURDATE, NULL, '从现在开始每天每间隔一分钟执行');
--提交作业
call SP_JOB_CONFIG_COMMIT( 'deleteLog');

tips:

1)作业的建立,从开启到提交作业需要按照顺序,同时“提交作业”的步骤不能随意提前,避免回滚失败。

2)SP_ADD_JOB_STEP 如果有多步骤,要用分号隔开。

SP_ADD_JOB_STEP('TEST', 'STEP2', 0, 'insert into myinfo values(1000, ''STEP2 Hello World'');insert into myinfo values(1000, ''STEP2 Hello World'');', 0, 0, 1, 1, NULL, 0); 

 四、存储过程转达梦

除了网上说的mysql到达梦的函数或者方法的转化注意事项外,我阐述下我遇到的小坑。

 mysql的存储过程代码中存在下面的一段赋值,在达梦中频繁出问题。

set v_snort_save_num = v_retain_per * (v_snort_num/v_sum) * v_memory_size /100;

 1)“v_snort_num/v_sum”,mysql中是除法,可以得出小数,在达梦中是求整数部分,结果为0。

于是,为了解决上述的问题,我调整了顺序,

v_snort_save_num  = v_retain_per* v_memory_size /100 * v_ftp_num/v_sum;

五、springboot的配置调整

 pom.xml增加依赖

    com.dameng    DmJdbcDriver18    8.1.1.193    com.dameng    DmDialect-for-hibernate5.3    8.1.2.192

 2. 修改yml文件,主要是驱动和连接

spring:  datasource:    driver-class-name: dm.jdbc.driver.DmDriver    url: jdbc:dm://192.168.0.1XX:5236/LOCALHOST?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8    username: ZZZZZZZZ    password: Zzzz~1234  jpa:    properties:      hibernate:        dialect: org.hibernate.dialect.DmDialect    show-sql: true

generator生成器修改

                                                                                                                                                                                                                                                                            

tips:

1)分割关键字“beginningDelimiter”在mysql是“`”,oracle与达梦是双引号,generator默认是双引号,所以屏蔽就行。

2)配置路劲“connectionURL”,yml中我们写的是&,在此处要用分号;替换。

3)主键自增“generatedKey ”要调整为sqlStatement="SYBASE"。其他数据库的自增参考下面:

sqlStatement:要生成的selectKey语句,有以下可选项:
Cloudscape:相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
DB2 :相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
DB2_MF :相当于selectKey的SQL为:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
Derby :相当于selectKey的SQL为:VALUES IDENTITY_VAL_LOCAL()
HSQLDB :相当于selectKey的SQL为:CALL IDENTITY()
Informix :相当于selectKey的SQL为:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
MySql :相当于selectKey的SQL为:SELECT LAST_INSERT_ID()
SqlServer :相当于selectKey的SQL为:SELECT SCOPE_IDENTITY()
SYBASE :相当于selectKey的SQL为:SELECT @@IDENTITY
JDBC :相当于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty属性

 结束!

来源地址:https://blog.csdn.net/xhuiting/article/details/130078076

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯