最近将mysql数据数据迁移到达梦数据库时,遇到报创建唯一索引失败的问题。
经过排查发现达梦数据库在创建唯一索引时(由多个字段组成的唯一索引场景),如下图:
其中一个字段重复,另一个字段为NULL,这样的数据在mysql数据库中是允许存在的。但在
达梦数据库不允许存在,因此会在迁移数据库的时候报创建唯一索引失效的问题。
网上针对mysql数据库存在的解释是: 因为这里 NULL 的定义 ,是指 未知值。 所以多个 NULL ,都是未知的,不能说它们是相等的,也不能说是不等,就是未知的。所以多个NULL的存在是不违反唯一约束的。
在达梦数据库里会被认为是重复数据,导致无法创建唯一索引;