为什么我的团队中没有TRUNCATE?即使我有一个删除级联集,我得到:

错误1701(42000):无法截断外键约束(mytest.instance,constraint instance_ibfk_1 foreign key(GroupID)REFERENCES mytest.mygroup(ID))中引用的表

drop database mytest;
create database mytest;
use mytest;

CREATE TABLE mygroup (
   ID    INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;

CREATE TABLE instance (
   ID           INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   GroupID      INT NOT NULL,
   DateTime     DATETIME DEFAULT NULL,

   FOREIGN KEY  (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
   UNIQUE(GroupID)
) ENGINE=InnoDB;

当前回答

另一种解决方法是删除表中的所有行,然后重置自动递增列:

delete from table_name where 1

然后运行:

ALTER TABLE table_name AUTO_INCREMENT = 1

其他回答

是的,您可以:

SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE table1;
TRUNCATE table2;

SET FOREIGN_KEY_CHECKS = 1;

使用这些语句,您可能会在表中放入不符合FOREIGN KEY约束的行。

另一种解决方法是删除表中的所有行,然后重置自动递增列:

delete from table_name where 1

然后运行:

ALTER TABLE table_name AUTO_INCREMENT = 1

你能做到的

DELETE FROM `mytable` WHERE `id` > 0

如何截断外键约束表?本图将演示如何在使用外键约束截断表时解决mysql错误。如果您使用的是PHPMYADMIN,那么非常容易用外键约束截断表。

登录PHPMYADMIN并单击要截断的表。然后转到SQL选项卡放置代码以截断SQL中的表编辑示例截断表学生;将学生替换为表的名称。在编辑器底部,取消选中“启用外键检查”复选框,如下所示:

它会像魔法一样工作。

如果您使用的是phpMyAdmin,那么很简单。

只需取消选中SQL选项卡下的启用外键检查选项,然后运行TRUNCATE<TABLE_NAME>