Ily*_*man 1 mysql uuid duplicates
我在MySql 5.5.19中发现了一个错误.
执行时:
select uuid(), uuid();
Run Code Online (Sandbox Code Playgroud)
你得到两个等于id.
当我将两个uuids插入到我的表中时,我遇到了两个这个bug,我总是得到相同的值.
有没有其他人在这两个错误中运行?如何为我的键执行需要两个uuids的insert命令?
编辑:
实际上我错了,他们在一位数上是不同的,所以很难看到
c3db913 7 -705e-11e1-ae17-1c6f6531b785
c3db913 f -705e-11e1-ae17-1c6f6531b785
Sho*_*ker 10
我坚信你没有得到重复的值,但是一些几乎相同的值(可能是1个不同的字符).由于该UUID的第一个块是从以毫秒为单位的时间戳产生的事实,这将意味着功能在同一毫秒执行(你运行它的超级计算机?),其中,说实话,是极不可能的.如果您真的得到重复项,那么运行两个单独的SELECT uuid()查询并使用所需查询中返回的值
小智 9
这不是 uuid() 函数的错误
出现意外结果是因为您的字符集客户端和字符集结果不是utf8时发生了不显式转换;
1 uuid() 输出是 utf8,无论您的字符集是什么;
2 当您的字符集客户端和字符集结果是一些比 utf8 高优先级的字符集(例如 utf8mb4 )时,就会发生隐式转换,其他优先级较低的字符集(例如 latin1)也可以正常工作;
3 隐式转换会在 sql 执行前将 uuid() 变成常量字符串,所以在 sql 执行完成后,同样的 uuid() 返回
您可以通过使用解释扩展+您的子句,然后使用显示警告来查看所有这些发生的情况;
怎么解决 ?1 将非显式转换为显式转换,例如:set names utf8mb4; 替换(转换(uuid()使用utf8mb4),'-','')
或者
设置名称 utf8mb4; 替换( uuid(),_utf8'-',_utf8'')
2 aviod 隐式转换例如:set names utf8
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |