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