2017-06-01 81 views
1

我有這樣的事情時,我打耙分貝:遷移 林在我的應用程序中使用費加羅,它的我第一次用這種寶石任何MySQL的,所以我不能得到什麼excatly是錯誤的。 感謝提前:)的MySQL數據庫沒有選擇軌道

Mysql2::Error: No database selected: CREATE TABLE schema_migrations (version varchar(255) PRIMARY KEY) ENGINE=InnoDB

的database.yml

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: <%= ENV["DB_USER"] %> 
    password: <%= ENV["DB_PASSWORD"] %> 

development: 
    <<: *default 
    database: <%= ENV["DB_DATABASE_DEV"] %> 


test: 
    <<: *default 
    database: <%= ENV["DB_DATABSE_TEST"] %> 


production: 
    <<: *default 
    database: <%= ENV['DB_DATABASE_PRODUCTION'] %> 

application.yml

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: password 

development: 
    <<: *default 
    database: dev 

test: 
    <<: *default 
    database: test_db 

回答

1

我沒有足夠的點來問意見,但看起來您正嘗試在不首先創建模式的情況下運行遷移。

運行rails db:create先創建架構。例如,如果您的MySQL中沒有名爲「dev」的數據庫,則此命令將執行此操作。

rails db:create 

要設置特定的環境

rails db:create RAILS_ENV=test 

然後你可以運行rails db:migrate

要銷燬的模式,如果你需要一個:

rails db:drop 

您正在使用ENV

雖然它可能不相關,有你在運行命令之前正確設置你的ENV?

對於Windows,您可以DB_USER添加這些,例如,system environment

只需按下開始,然後鍵入system environment >>Environment Variables... >>New...

Variable Name: DB_USER 
Variable Value: your_username 

注意:您可能需要重新啓動系統爲環境工作。

或者,如果你沒有時間,只需在終端你正在運行的軌道S:

C:\Sites\ProjectName> set DB_USER=your_username 
C:\Sites\ProjectName> set DB_PASSWORD=your_username 
C:\Sites\ProjectName> rails s 

對Linux的同樣的步驟,但我不知道具體的命令。有些人喜歡使用.env文件。

0

我碰到這樣的麻煩,幾天前,這是很煩人,因爲Rails的嘗試創建開發和測試數據庫在開發環境時。沒有工作。

我結束了硬編碼database:database.yml,並讓Figaro管理憑證。