使用TRUNCATE TABLE 清空数据时出现以下错误:
为什么会出现这种错误呢?
- 经过测试是因为使用TRUNCATE TABLE 命令对被引用做外键的主表进行数据清空时,无论主表里的数据是否被引用,都会出现这种错误。
解决办法:
- 先把外键约束关闭,清空后在打开即可。
SET FOREIGN_KEY_CHECKS = 0; //先归0
TRUNCATE 表名; //在清除数据
SET FOREIGN_KEY_CHECKS = 1; //然后设置1
但是,使用上述方法不能保证数据安全性,如果从表引用了主表数据,它也会把主表所有数据给清空,不建议使用。
- 使用DELETE进行清空数据,它会对数据进行检查,如果被引用的话会有提示
DELETE FROM 表名
所以对具有外键约束的主表数据进行删除时直接使用第二种方法对数据进行删除即可。