MySQL迁移到达梦数据库DM过程问题记录
最近有个项⽬数据库需要国产化使⽤DM,迁移MySQL到DM过程⽐较简单,遇到⼏个问题记录备忘,持续更新。
问题⼀
使⽤达梦⾃带的数据迁移⼯具(DTS),将MySQL数据库迁移⾄达梦数据库(以下简称DM),迁移过程报如下错误:
/* 任务失败: 创建表"bpdb"."HOOK_T" */
/* 对象[UPDATE_TIME]DEFAULT约束表达式⽆效 */
/* 相关SQL语句: */
CREATE TABLE "bpdb"."HOOK_T"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"DOMAIN" VARCHAR(300) NOT NULL,
"APP_ID" VARCHAR(300) NOT NULL,
"CONDITIONS" VARCHAR(600) NOT NULL,
"CALL_BACK_URL" VARCHAR(600) NOT NULL,
"CREATOR" VARCHAR(300) NOT NULL,
"CREATE_TIME" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"UPDATE_TIME" TIMESTAMP(0) DEFAULT '0000-00-00 00:00:00'
NOT NULL,
"STATUS" INT NOT NULL
);
/
* 任务失败: 创建表"bpdb"."BIND_RELATIONSHIP_T" */
/* 第13 ⾏附近出现错误:
对象[EX_PLATFORM_FLAG]DEFAULT约束表达式⽆效 */
/* 相关SQL语句: */
CREATE TABLE "bpdb"."BIND_RELATIONSHIP_T"
(
"ID" BIGINT IDENTITY(40,1) NOT NULL,
"USER_ID" BIGINT NOT NULL,
"EX_PLATFORM_FLAG" VARCHAR(400) DEFAULT BLUEPRINT
NULL,
"EX_PLATFORM_NAME" VARCHAR(400) DEFAULT 测试平台
NULL,
"DOMAIN" VARCHAR(400) NOT NULL,
"DOMAIN_NAME" VARCHAR(400) NOT NULL,
"EX_USER_UNI_ID" VARCHAR(400) NOT NULL,mysql视图和存储过程
"TYPE" VARCHAR(80) NULL
);
解决⽅法:
1. DM默认不⽀持zeroDateTime这种设置,将’0000-00-00 00:00:00’改为’1900-01-01 00:00:00’
2. DM建表语句不⽀持NULL可为空的语法,删除NULL,默认可为空;
问题⼆
DM执⾏SQL语句必须指定schema,即schema.tablename,程序jdbc访问(⽐如使⽤Mybatis,⽐较悲剧)⽆法⾃动设置schema,会带来改造风险。
解决办法:
DM中新建和应⽤系统对应的管理⽤户,如bp对应管理⽤户bpdb,DM会⾃动⽣成名为bpdb的模式,然后把数据对象(表、视图、存储过程等)创建到该模式下;使⽤bpdb登录DM,执⾏SQL可以不带schema。
程序中使⽤bpdb⽤户连接DM,jdbc连接配置⽰例如下:
#DM
#DM数据库驱动类型
jdbc.driver=dm.jdbc.driver.DmDriver #DM数据库连接地址
jdbc.url=jdbc:dm://IP:5236/BPDB
#DM数据库⽤户名
jdbc.username=bpdb
#DM数据库密码
jdbc.password=dbpwd

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。