我最近開始在Rails項目中使用現有的數據庫,但是我意識到所有來自該數據庫的表都被合併了。從模式中刪除表而不從數據庫中刪除它?
我仍然需要這些表中的一部分,而不是這個項目。
恐怕通過遷移刪除它們也會將它們從我的實際數據庫中刪除。我可以從schema.rb手動刪除它們嗎?
我最近開始在Rails項目中使用現有的數據庫,但是我意識到所有來自該數據庫的表都被合併了。從模式中刪除表而不從數據庫中刪除它?
我仍然需要這些表中的一部分,而不是這個項目。
恐怕通過遷移刪除它們也會將它們從我的實際數據庫中刪除。我可以從schema.rb手動刪除它們嗎?
創建一個空遷移文件並編輯它使用DROP TABLE:
drop_table :table_name
謝謝@tTam。我應該在運行'rake db:migrate'之後嗎? – veryrarecandy
這實際上會從數據庫中刪除表。你想要嗎? @jiggabits –
@Kirti不,我不想從我的數據庫中刪除表。從我的模式。 – veryrarecandy
db/schema.rb
就像是你的完整的數據庫的藍圖。所以,不,它不可能在數據庫中有表格,並且避免在db/schema.rb
中顯示它們,因爲它會選擇數據庫的完整模式。即使你在你的數據庫去手動添加新表(即無遷移),它仍然會體現在db/schema.rb
按照Rails的指南,
注意運行分貝:遷移任務還會調用db:schema:dump 任務,該任務會將您的db/schema.rb文件更新爲,與您的數據庫的結構 相匹配。
從Rails的指南另一個參考概括起來
遷移,強大的,因爲他們可能是不適合你的數據庫架構的權威來源 。該角色落在db/schema.rb或Active Record通過檢查數據庫生成的SQL文件中。他們 不是爲了編輯而設計的,他們只是代表數據庫的當前狀態 。
好點+1 :) – Pavan
通過'schema',你的意思是'db/schema.rb'嗎? –
看這裏(http://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do)閱讀有關schema.rb的目的,ActiveRecord不使用它加載數據庫表。所以從那裏刪除任何東西都沒有目的。 – Iceman
爲什麼你想從你的模式中刪除它們?我的意思是,在架構中使用它們會導致什麼問題? –