2013-12-22 76 views
2

我的應用程序使用Postgresql的模式而不是多個數據庫,因此每個環境都有自己的模式。也就是說,我正在使用一個productiondevelopmenttest架構的數據庫。我從這個數據庫中刪除了public模式。模式遷移的非公有模式

我已經建立了我第一次遷移,但是當我運行rake db:migrate我得到一個錯誤,說明

PG::InvalidSchemaName: ERROR: no schema has been selected to create in: CREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) 

我已經包含在schema_search_pathdatabase.yml

development: 
    adapter: postgresql 
    username: 
    password: 
    database: 
    host: localhost 
    port: 5433 
    schema_search_path: 'development' 

由於我的應用程序ISN將不會使用任何可以讓它成爲多租戶的功能,我並不想使用像Apartment這樣的大型創業板。有沒有辦法讓rake db:migrate命令與我的模式一起工作?

+0

總而言之,您需要相應地設置search_path。不知道它是如何在Rails中完成的,但連接後的一個簡單查詢應該可以做到。 –

+0

哈哈,當然是,但我問是否可以使用普通的'rake db:migrate'任務。我不知道如何在Rails中設置'search_path'來進行非'database.yml'中的遷移。 – josh

+2

您可以設置搜索路徑,例如運行'將search_path設置爲生產,公共'。在運行後續查詢之前進行數據庫查詢。而且,如果在配置文件中設置搜索路徑,但無法在運行遷移時運行,則可能是rails中的一個錯誤。 –

回答

0

因爲在數據庫中沒有稱爲開發的模式。

+0

不,這不是問題,我已經在數據庫中創建了模式。我認爲這是Rails的一個問題,或者至少當時是個問題,在創建初始表時,它不會在表中添加前綴。之後當我將'search search_path設置爲生產,公共'時會起作用。 – josh