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,
 "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

你可能感兴趣的:(数据库)