在使用mysql过程中,发现了一个奇怪问题。
当字符集设置为utf8mb4时,执行下面SQL时,返回的多条数据中的uuid是相同的值。
-
SELECT UPPER(REPLACE(uuid(),'-','')) FROM mysql.user;
UPPER(REPLACE(uuid(),'-',''))
52A8B75CEB5D11E5B180005056920044
52A8B75CEB5D11E5B180005056920044
52A8B75CEB5D11E5B180005056920044
52A8B75CEB5D11E5B180005056920044
而单纯使用uuid()函数则返回值是不同的。
-
select uuid() from user;
uuid()
be7f8d5f-eb5d-11e5-b180-005056920044
be7f8d9a-eb5d-11e5-b180-005056920044
be7f8da2-eb5d-11e5-b180-005056920044
be7f8daa-eb5d-11e5-b180-005056920044
从现在掌握的现象来看,utf8mb4时,UPPER(REPLACE(uuid(),'-',''))会有问题。
如果执行set names utf8,则上述现象消失。
等待高人指点。
阅读(2123) | 评论(0) | 转发(0) |