错误:#1436 - 使用MySQL触发器进行线程堆栈溢出

时间:2012-10-16 15:02:02

标签: mysql sql triggers

给定错误:#1436 - 线程堆栈溢出:使用6024字节的131072字节堆栈,需要128000字节。使用'mysqld -O thread_stack =#'指定更大的堆栈。

DROP TRIGGER IF EXISTS `After_delete_area_package`;
DELIMITER //
CREATE TRIGGER `After_delete_area_package` AFTER DELETE ON `area_package`
FOR EACH ROW BEGIN    
DELETE FROM accounts_areas
WHERE (area_id = 1); 
END
//
DELIMITER ;
很简单就像我猜的那样。 表accounts_areas中唯一的area_id是1
在此之前我尝试了old.package_area_id

我没有外键限制,我的开销在设置为28B的phpMyAdmin中变为红色。

RDMS:myISAM

SQLFIDDLE:http://sqlfiddle.com/#!2/79a41

问题:为什么我的触发器不会删除accounts_areas中area_id = 1

的所有行

1 个答案:

答案 0 :(得分:0)

你可能错过END吗?

DROP TRIGGER IF EXISTS After_delete_area_package;

DELIMITER $$
CREATE TRIGGER After_delete_area_package AFTER DELETE ON area_package
FOR EACH ROW
BEGIN
DELETE FROM accounts_areas
    WHERE area_id = 1;
END$$
DELIMITER;

修改1

由于您正在恢复thread_stack错误,解决方案将是增加堆栈大小。