gpt4 book ai didi

mysql - 如何正确截断表格?

转载 作者:IT老高 更新时间:2023-10-28 12:59:15 24 4
gpt4 key购买 nike

我正在使用带有 ruby​​ 的 datamapper 将数据存储到某些表中。

有几个表包含大量信息,我想在用户“重建数据库”时清除它们(它基本上会删除所有内容并重新计算数据)。

我最初尝试了 Forum.all.destroy 并为所有不同的表做了,但我注意到其中一些只是没有从 phpmyadmin 中删除。我只能想象这是因为外键。虽然我真的不知道因为我的其他表哪些外键被成功删除。更不用说,无论如何我宁愿将它“归零”,这样 key 就不会变成非常大的数字(例如 key #500,000)。

然后我尝试使用下面的代码运行它,但由于“外键约束”,它没有清除表格。我想强制它工作,因为我知道我正在清除所有相互依赖的表(我只是没有清除 2 个表,一个设置表和一个随机存储表,这两个表都不使用外键)。

到目前为止我...

adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');

这很好,只是 MySQL 语法显然是错误的。所以这是第一件事。

我在 phpmyadmin 中一个一个地做,当我这样做时,它说

Cannot truncate a table referenced in a foreign key constraint

最佳答案

A 计划:

SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking.
TRUNCATE TABLE forums;
TRUNCATE TABLE dates;
TRUNCATE TABLE remarks;
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking.

B计划:

您应该先截断子表,然后截断父表。

禁用外键检查有可能将不遵守可能导致未定义行为的约束的行输入到表中。

关于mysql - 如何正确截断表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com