2012-07-17 118 views
0

在MySQL 5.0.77版本,我跑这如何删除坏触发

CREATE TRIGGER ins_trap_to_memory AFTER INSERT on Table1 
FOR EACH ROW 
INSERT INTO Table1_Copy SELECT NEW.*; 

它跑,但现在数据库断开每当我试图做某些事情:

不能查看triggers-

mysql> SHOW TRIGGERS LIKE '%'\G 
ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 7 
Current database: mydb 

ERROR 2013 (HY000): Lost connection to MySQL server during query 

无法删除问题TRIGGER-

mysql> DROP TRIGGER ins_trap_to_memory; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

无法查询information_schema.TRIGGERS-

mysql> select * from information_schema.TRIGGERS; 
ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 12 
Current database: information_schema 

ERROR 2013 (HY000): Lost connection to MySQL server during query 

回答

2

做其他类型的查询工作的?

除非Table1的插入量持续增加,否则两者是相关的,这似乎不太可能,并且这是服务器过载的结果。这可能只是一个间歇性的连接问题。

无论哪种方式,你应该能够砸:

DROP TRIGGER ins_trap_to_memory ON Table1 
+0

我无法尝试此操作,因为我在看到此答案之前找到了修复程序。 – sans 2012-07-17 15:43:38

1

之所以能够前往/var/lib/mysql/mydb和删除Table1.TRG摆脱坏触发的。

+0

该触发器有什么问题? – Jocelyn 2012-07-17 15:46:30

+0

以这种方式删除触发器是管理你的MySQL的一种可怕的方式,并且服务器消失的消息可能是比无法执行一些查询更糟糕的事情的症状。 – 2012-07-17 15:52:19

+0

从字面上不可能从MySQL内部删除触发器。 – sans 2012-07-17 15:54:55