我正在尝试将遗留的 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/