我正在寫一個rails應用程序,它從另一個(遺留的,因爲它沒有任何單元測試...)系統的表中讀取數據。它沒有對這些表的任何權限(最終,它將擁抱和擴展...)如何防止在夾具加載過程中啓用alter table/trigger
我共享相同的數據庫(postgresql),並且這兩個應用程序有單獨的數據庫用戶。當我加載我的初始設備時,我收到投訴,因爲rails試圖更改所有表以啓用觸發器。我可以關閉它嗎?
PGError:錯誤:必須是關係auth_message 的所有者:ALTER TABLE 「auth_message」 ENABLE TRIGGER ALL; ALTER TABLE 「django_session中」 ENABLE TRIGGER ALL; ALTER TABLE 「django_site」 ENABLE TRIGGER ALL; ALTER TABLE 「django_admin_log」 ENABLE TRIGGER ALL; ALTER TABLE「django_content_type」 ......
看來,這發生在fixtures,從./lib/active_record/fixtures.rb它調用connection.disable_referential_integrity,這是: ./lib/active_record/connection_adapters/postgresql_adapter.rb:def disable_referential_integrity ...我無法輕易禁用這個功能,我可能會寫一個猴子修補程序的rake任務。與此同時,我實際上並不需要在生產環境中加載很多東西,所以我會手動完成。 – mcr 2011-06-16 21:23:04
似乎你的方法正確。但是權限錯誤,正如Postgres所建議的。您需要以超級用戶或該表的所有者身份進行連接。 – 2011-06-17 12:06:00