【发布时间】:2014-04-29 04:49:24
【问题描述】:
我在两台不同的服务器上运行完全相同的代码:
Truncate table2;
Truncate table1;
两台服务器的表结构完全相同,table2有一个外键引用table1。
由于 table2 在 table1 之前被截断,它是空的,并且没有指向 table1 的键,所以截断 table2 应该没有问题。 但是!!!:
在一台服务器上运行良好,而在另一台服务器上出现外键约束错误:
Cannot truncate a table referenced in a foreign key constraint (user`.`table2`,
CONSTRAINT `table2_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `user`.`table1` (`ID`))
从中我可以理解,必须有一个可以更改的设置,以便始终允许截断空表。如果不是服务器一个应该给我同样的错误。
我知道我可以使用 delete 代替,但它是一个较长的过程,在这种情况下需要重置 auto_increment。
我只是想了解为什么服务器 1 没有错误而服务器 2 有。
有什么想法吗? 谢谢。
【问题讨论】:
-
只需删除索引,截断表,然后再次添加外键。