【发布时间】:2012-01-28 07:51:33
【问题描述】:
我正在使用带有 ruby 的 datamapper 将数据存储到某些表中。
有几个表有非常多的信息,我想在用户“重建数据库”时清除它们(它基本上会删除所有内容并重新计算数据)。
我最初尝试使用 Forum.all.destroy 并为所有不同的表执行此操作,但我注意到其中一些只是没有从 phpmyadmin 中删除。我只能想象这是因为外键。虽然我真的不知道因为我的其他表哪些外键被成功删除。更不用说,无论如何我宁愿将它“归零”,这样密钥就不会变成非常大的数字(例如密钥 #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
【问题讨论】:
标签: mysql ruby datamapper