MySQL迁移到达梦数据库DM过程问题记录

深藏阁楼爱情的钟 2023-05-22 22:28 22阅读 0赞

问题一

使用达梦自带的数据迁移工具(DTS),将MySQL数据库迁移至达梦数据库(以下简称DM),迁移过程报如下错误:

  1. /* 任务失败: 创建表"bpdb"."HOOK_T" */
  2. /* 对象[UPDATE_TIME]DEFAULT约束表达式无效 */
  3. /* 相关SQL语句: */
  4. CREATE TABLE "bpdb"."HOOK_T"
  5. (
  6. "ID" BIGINT IDENTITY(1,1) NOT NULL,
  7. "DOMAIN" VARCHAR(300) NOT NULL,
  8. "APP_ID" VARCHAR(300) NOT NULL,
  9. "CONDITIONS" VARCHAR(600) NOT NULL,
  10. "CALL_BACK_URL" VARCHAR(600) NOT NULL,
  11. "CREATOR" VARCHAR(300) NOT NULL,
  12. "CREATE_TIME" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  13. NOT NULL,
  14. "UPDATE_TIME" TIMESTAMP(0) DEFAULT '0000-00-00 00:00:00'
  15. NOT NULL,
  16. "STATUS" INT NOT NULL
  17. );
  18. /* 任务失败: 创建表"bpdb"."BIND_RELATIONSHIP_T" */
  19. /* 第13 行附近出现错误:
  20. 对象[EX_PLATFORM_FLAG]DEFAULT约束表达式无效 */
  21. /* 相关SQL语句: */
  22. CREATE TABLE "bpdb"."BIND_RELATIONSHIP_T"
  23. (
  24. "ID" BIGINT IDENTITY(40,1) NOT NULL,
  25. "USER_ID" BIGINT NOT NULL,
  26. "EX_PLATFORM_FLAG" VARCHAR(400) DEFAULT BLUEPRINT
  27. NULL,
  28. "EX_PLATFORM_NAME" VARCHAR(400) DEFAULT 测试平台
  29. NULL,
  30. "DOMAIN" VARCHAR(400) NOT NULL,
  31. "DOMAIN_NAME" VARCHAR(400) NOT NULL,
  32. "EX_USER_UNI_ID" VARCHAR(400) NOT NULL,
  33. "TYPE" VARCHAR(80) NULL
  34. );

解决方法:

  1. DM默认不支持zeroDateTime这种设置,将’0000-00-00 00:00:00’改为’1900-01-01 00:00:00’
  2. DM建表语句不支持NULL可为空的语法,删除NULL,默认可为空;

问题二

  1. DM执行SQL语句必须指定schema,即schema.tablename,程序jdbc访问(比如使用Mybatis,比较悲剧)无法自动设置schema,会带来改造风险。

解决办法:
DM中新建和应用系统对应的管理用户,如bp对应管理用户bpdb,DM会自动生成名为bpdb的模式,然后把数据对象(表、视图、存储过程等)创建到该模式下;使用bpdb登录DM,执行SQL可以不带schema。
程序中使用bpdb用户连接DM,jdbc连接配置示例如下:

  1. #DM
  2. #DM数据库驱动类型
  3. jdbc.driver=dm.jdbc.driver.DmDriver
  4. #DM数据库连接地址
  5. jdbc.url=jdbc:dm://IP:5236/BPDB
  6. #DM数据库用户名
  7. jdbc.username=bpdb
  8. #DM数据库密码
  9. jdbc.password=dbpwd

发表评论

表情:
评论列表 (有 0 条评论,22人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DM数据库介绍。

    达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。 达梦数据库也属于关系型数据库,主要有以下几个概念: 数据库、实例、用户、[表空间][

    相关 数据库/DM7迁移之导出sql脚本

    当我们遇到数据迁移的需求时,很多时候出于效率和数据安全的考虑,我们并不想迁移整个数据库或者整张表,而是只想导出其中的一部分数据。DM7中提供了多种图形化以及命令行的工具来满足数