解决mysql select replace UUID()重复的问题
工作中经常会需要提交sql 修复数据,我们id是用的uuid,然后一般插入数据需要用到replace(UUID(),‘-’,‘’)函数,在这其中就会遇到一个问题:
在我们测试环境,在批量生成id时,replace(UUID(),‘-’,‘’) 的结果会相同,如下图:
可以看到 replace出来的FID是相同的
解决方式
使用 REPLACE(@id := UUID(), ‘-’, ‘’) 函数
运行结果如下图:
原因
查了一些资料,《 REPLACE(UUID(), ‘-’, ‘’)重复问题》(https://www.jianshu.com/p/f29241fea388)
中说 :发现replace(UUID(),‘-’,‘’) 重复的问题存在于 mysql的5.7的一些版本中,在5.8之后就可以生成不重复的UUID了。
我这个版本为:5.7.23
然后根据和同事比较:
相同的sql ,在他那边执行就生成不同的uuid,我这里就是相同的uuid
似乎是 不同的navicat版本 ,导致的这个问题。
重要的是 我是 15.0.17 新版本,他的是 11.0.17(64bit)旧版本。
所以具体原因暂时无法确定