我使用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