MySQL存储过程将bigint转换为UUID

时间:2013-10-24 22:34:58

标签: mysql sql stored-procedures uuid

我试图将传统的bigint字段转换为uuids序列:

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.

1 个答案:

答案 0 :(得分:0)

原来这个程序没有问题,问题在于线程堆栈配置。

您可以通过在my.cnf

中递增来增加thread_stack的大小
thread_stack = 256K