达梦数据库创建唯一索引失败问题

qq_35395777 2021-03-02 04:12:41
最近将mysql数据数据迁移到达梦数据库时,遇到报创建唯一索引失败的问题。
经过排查发现达梦数据库在创建唯一索引时(由多个字段组成的唯一索引场景),如下图:


其中一个字段重复,另一个字段为NULL,这样的数据在mysql数据库中是允许存在的。但在
达梦数据库不允许存在,因此会在迁移数据库的时候报创建唯一索引失效的问题。

网上针对mysql数据库存在的解释是: 因为这里 NULL 的定义 ,是指 未知值。 所以多个 NULL ,都是未知的,不能说它们是相等的,也不能说是不等,就是未知的。所以多个NULL的存在是不违反唯一约束的。

在达梦数据库里会被认为是重复数据,导致无法创建唯一索引;
...全文
2384 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liups 2021-03-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_35395777 的回复:
引用 3 楼 liups 的回复:
迁移么随便改一下就行了,人家很多的唯一索引都是自动的ID,完全没有这方面的问题
主键自动递增的唯一索引没有这个问题哈, 就是我截图中的数据,由这两个字段(一个字段值相同,41959207-6, 另一个字段为NULL),当存在这样的数据时,在达梦数据库里创建由这2个字段组成的唯一索引报错,不能创建。 但在mysql数据里是允许的。
你不能把其他数据库当成mysql来用啊
qq_35395777 2021-03-05
  • 打赏
  • 举报
回复
引用 3 楼 liups 的回复:
迁移么随便改一下就行了,人家很多的唯一索引都是自动的ID,完全没有这方面的问题
主键自动递增的唯一索引没有这个问题哈, 就是我截图中的数据,由这两个字段(一个字段值相同,41959207-6, 另一个字段为NULL),当存在这样的数据时,在达梦数据库里创建由这2个字段组成的唯一索引报错,不能创建。 但在mysql数据里是允许的。
qq_35395777 2021-03-05
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师 的回复:
将NULL的字段替换为一个非NULL的值后,再创建唯一索引?
不是哈。迁移后,就是我截图的数据,在达梦数据库里就无法创建这两个字段组成的唯一索引
liups 2021-03-04
  • 打赏
  • 举报
回复
迁移么随便改一下就行了,人家很多的唯一索引都是自动的ID,完全没有这方面的问题
赵4老师 2021-03-03
  • 打赏
  • 举报
回复
将NULL的字段替换为一个非NULL的值后,再创建唯一索引?
qq_35395777 2021-03-02
  • 打赏
  • 举报
回复
所以想知道如何解决达梦数据库针对这样的数据场景问题。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧