mysql - MySQL bigint转UUID的存储过程

标签 mysql sql stored-procedures uuid

我正在尝试将遗留的 bigint 字段转换为一系列 uuid:

DELIMITER | 
CREATE FUNCTION uuid_from_bigint(b bigint) RETURNS CHAR(36) BEGIN
 DECLARE hex CHAR(32);
 SET hex = lpad(hex(b), 32, '0');
 RETURN CONCAT(LEFT(hex, 8), '-', MID(hex, 9,4), '-', MID(hex, 13,4), '-', MID(hex, 17,4), '-', RIGHT(hex, 12));
END
| 
DELIMITER ;

谁能帮我理解为什么这会导致以下问题?

mysql> select uuid_from_bigint(9);
ERROR 1436 (HY000): Thread stack overrun:  12816 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use 'mysqld --thread_stack=#' to specify a bigger stack.

最佳答案

原来这个过程没有问题,问题出在线程堆栈配置上。

您可以通过在 my.cnf 中增加 thread_stack 的大小来增加它:

thread_stack = 256K

关于mysql - MySQL bigint转UUID的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577991/

相关文章:

事务中插入时 MySQL 外键约束错误

PHP 和 HTML 删除

mysql - 从sql结果中提取值

mysql - 日期范围问题

c# - 如何动态检查数组中的索引是否存在?

mysql - 如果(作为一个组)满足条件,则获取表中的每一行

sql - 使用计数优化 DELETE 语句

mysql - 如何在DataGrip 中向mysql 添加新的存储过程?

java - 无法检索我希望使用存储过程选择的值

python - 获取 mysql 数据作为 python 字典