本文主要是介绍mysql使用truncate清空表有外键问题(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;
注意:这个语句只是会话级的,只能在这个会话操作导入数据,删除数据之类的操作。再打开新的会话,外键还是启用着生效的。
-- 启动外键约束.
SET FOREIGN_KEY_CHECKS=1;
注意:或者直接把当前会话关闭了,再新开会话,外键就是启用的
-- 查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
@@FOREIGN_KEY_CHECKS=0(禁用外键)
@@FOREIGN_KEY_CHECKS=1(启用外键)
这篇关于mysql使用truncate清空表有外键问题(mysql 禁用和启用外键)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!