我用ruby将datamapper存储到某些表中。如何正确截断表格?
几个表有很大量的信息,我想在用户'重建数据库'(它基本上删除所有内容并重新计算数据)时清除它们。
我最初尝试过Forum.all.destroy,并为所有不同的表做过,但我注意到其中一些只是从phpmyadmin中删除了werent。我只能想象它是因为外键。虽然我真的不知道,因为我的其他表,前钥匙被成功删除。更不用说,无论如何,ID只是“零”,所以键不会超大数字(如#500,000)。
然后我试着用下面的代码来运行它,但由于'外键约束'它不清除表。我想迫使它工作,因为我知道一个事实,我正在清除所有相互依赖的表(我只是不清除2个表,一个设置表和一个随机存储表,两者都不使用外键)。
到目前为止,我有...
adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');
除了MySQL的语法是错误显然这将是罚款。因此多数民众赞成的第一件事
我在phpMyAdmin做到了1加1,当我这样做了,它说
Cannot truncate a table referenced in a foreign key constraint
任何想法如何在ruby中做到这一点?我试着在应用程序内单独运行每个命令,并没有删除任何东西。 然后我尝试在phpmyadmin中依次运行它们,并且它仍然说#1701 - 无法截断在外键约束中引用的表 – Tallboy 2011-12-27 08:24:20
从头开始!它的工作......它只是在那里只有一毫秒,它重新添加我的数据,我没有捕获它实际上截断。谢谢! – Tallboy 2011-12-27 08:30:22
我截断了子表,但即使如此,它在删除父表时失败。无论如何,我现在使用了禁用外键检查的黑客行为。 – inquisitive 2016-12-04 12:38:10