提问人:Elbo Shindi Pangestu 提问时间:11/17/2023 最后编辑:ShadowElbo Shindi Pangestu 更新时间:11/18/2023 访问量:33
MySQL 与 Percona XtraDB 集群中 uuid_to_bin() 的输出不一致
Inconsistent Outputs from uuid_to_bin() in MySQL vs. Percona XtraDB Cluster
问:
我目前正在使用 MySQL 和 Percona XtraDB Cluster,并且在这两个系统的行为和功能方面遇到了奇怪的差异。uuid_to_bin()
bin_to_uuid()
- 我正在使用 MySQL 版本 8.1.0(用于本地)和 Percona XtraDB 集群版本 5.7.39-42-57-log(用于生产)。
- 我的工作涉及在两种环境中处理 UUID。
例如,查询在 MySQL 和 Percona XtraDB Cluster 中生成不同的输出。这使得在不同环境中进行调试变得更加困难。select uuid_to_bin('01ae07f7-8513-11ee-98f4-0242ac110005')
为什么此查询在 MySQL 和 Percona XtraDB 集群中产生不同的结果?
答:
0赞
Bill Karwin
11/18/2023
#1
从上面的评论来看,似乎有人在 Percona XtraDB Cluster 5.7 实例上创建了一个名为 的函数,但它们的实现与 MySQL 8.0 中添加的同名内置函数略有不兼容。CREATE FUNCTION
uuid_to_bin
这会导致混淆,因为在开发实例中使用该函数获得的结果与在生产环境中使用的结果不同。该函数以相同的名称存在,但它是不同的函数。
在开发和测试中使用与在生产中使用的相同版本的数据库软件非常重要。每个版本都包含许多更改、新功能,甚至功能删除。其中一些更改是无害的,但其他更改会导致不兼容。
您不想浪费时间使用较新版本中存在的功能,然后部署到生产中的旧版本,并惊讶地发现该功能未在旧版本中实现。这很令人沮丧,更重要的是,它可能会导致问题,因为您必须撤消一些您已经认为已经完成的代码。你的雇主不会对浪费的时间感到满意。
因此,您应该尽可能使用在生产环境中运行的相同版本的软件进行开发和测试。
评论
bin_to_uuid()
uuid_to_bin()
bin_to_uuid()
SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='uuid_to_bin';