ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint

## ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (bookstore.bookinfo, CONSTRAINT bookinfo_ibfk_1)]

在删除mysql表的数据时提示如下错误:ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (bookstore.bookinfo, CONSTRAINT bookinfo_ibfk_1)]

翻译为错误1701(42000):无法截断外键约束(bookstore.bookinfo,约束bookinfo\u ibfk\u 1)中引用的表]

原因:该表设有外键,需要先将外键约束清空再进行数据删除,此时才会删除成功,删除成功后需要再将外键约束置1.

SET FOREIGN_KEY_CHECKS = 0;   //外键约束清空
TRUNCATE 表名;              //删除数据
SET FOREIGN_KEY_CHECKS = 1;   //外键约束设置1
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是因为你试图截断一个被其他表关联的表。在这种情况下, `deposit` 表被 `User` 表中的外键约束所引用,所以你不能直接将 `deposit` 表截断。你需要先删除与 `deposit` 表相关的所有约束,然后截断表,最后再重新创建约束。 以下是具体的步骤: 1. 检查哪些表引用了 `deposit` 表的外键约束。使用以下查询语句: ``` SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE referenced_table_name = 'deposit'; ``` 这会返回一组表和约束名称的列表,这些表引用了 `deposit` 表中的外键约束。 2. 删除与 `deposit` 表相关的所有约束。使用以下语句: ``` ALTER TABLE table_name DROP FOREIGN KEY constraint_name; ``` 其中, `table_name` 是引用了 `deposit` 表的表的名称, `constraint_name` 是需要删除的外键约束的名称。 重复这个步骤,直到所有的外键约束都被删除。 3. 截断 `deposit` 表。使用以下语句: ``` TRUNCATE TABLE deposit; ``` 4. 重新创建与 `deposit` 表相关的所有约束。使用以下语句: ``` ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table_name (referenced_column_name); ``` 其中, `table_name` 是引用了 `deposit` 表的表的名称, `constraint_name` 是需要创建的外键约束的名称, `column_name` 是 `deposit` 表中用于引用另一个表的列的名称, `referenced_table_name` 是被引用的表的名称, `referenced_column_name` 是被引用的表中用于匹配 `column_name` 的列的名称。 重复这个步骤,直到所有的外键约束都被重新创建。 这些步骤应该可以解决你遇到的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值