我只是在學習MySQL的存儲函數和過程語法。我硬編碼了一個返回數字12的函數,它溢出了堆棧。有人知道這裏有什麼嗎?這是MySQL 5.5.30。爲什麼單行MySQL存儲函數溢出堆棧?
mysql> DELIMITER //
mysql> CREATE FUNCTION `newItemID`()
-> RETURNS BIGINT
-> SQL SECURITY INVOKER
-> BEGIN
-> RETURN 12;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> SELECT newItemID();
ERROR 1436 (HY000): Thread stack overrun: 12288 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.
Hm,在這裏工作@ 5.5.34,使用相同的默認線程堆棧如果添加'DETERMINISTIC'&放下'BEGIN'和'END'會發生什麼?這是香草MySQL嗎? – Wrikken
'線程堆棧溢出:12288字節用於131072字節堆棧'嗯,看起來你只用了大約1/10的堆棧大小。不知道發生了什麼,但這是一個奇怪的。 – Taylor
[MySQL錯誤1436:線程堆棧溢出,使用簡單查詢]的可能重複(http://stackoverflow.com/questions/8821575/mysql-error-1436-thread-stack-overrun-with-simple-query) –