(mysql 禁用和启用外键)
mysql多个表之前存在外键关联时,清空数据报错,如下:
TRUNCATE TABLE security_data
> 1701 - Cannot truncate a table referenced in a foreign key constraint (`scb-dev`.`identify_result`, CONSTRAINT `identify_result_ibfk_2` FOREIGN KEY (`SECURITY_DATA_ID`) REFERENCES `scb-dev`.`security_data` (`ID`))
> 时间: 0.001s
解决方法:删除时先禁用外键,然后再启动外键
-- 禁用外键约束.
SET FOREIGN_KEY_CHECKS=0;
注意:这个语句只是会话级的,只能在这个会话操作导入数据,删除数据之类的操作。再打开新的会话,外键还是启用着生效的。
-- 清除表内容,并且自动递增从1开始.
truncate table campaigns
-- 启动外键约束.
SET FOREIGN_KEY_CHECKS=1;
注意:或者直接把当前会话关闭了,再新开会话,外键就是启用的
-- 查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
@@FOREIGN_KEY_CHECKS=0(禁用外键)
@@FOREIGN_KEY_CHECKS=1(启用外键)