简体   繁体   English

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

[英]Error: #1436 - Thread stack overrun with MySQL trigger

Given error: #1436 - Thread stack overrun: 6024 bytes used of a 131072 byte stack, and 128000 bytes needed. 给定错误:#1436-线程堆栈溢出:131072字节堆栈使用了6024字节,而需要128000字节。 Use 'mysqld -O thread_stack=#' to specify a bigger stack. 使用“ 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 ;

simple as hell i would guess. 我猜很简单。 The only area_id in table accounts_areas is 1 表account_areas中唯一的area_id为1
Before that i tried old.package_area_id 在那之前我尝试过old.package_area_id

I do not have foreign key restraints and my overhead goes red in phpMyAdmin set to 28B. 我没有外键约束,并且在phpMyAdmin设置为28B时,我的开销变成红色。

RDMS: myISAM RDMS:myISAM

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

Question: Why would my trigger not delete all the rows from accounts_areas where area_id = 1 问题:为什么我的触发器不删除accounts_areas中的所有行,而area_id = 1

Could you perhaps be missing an END ? 您可能错过了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;

Edit 1 编辑1

Since you are reviving a thread_stack error, the solution would would be to increase the stack size. 由于您正在恢复thread_stack错误,因此解决方案将是增加堆栈大小。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM