2017-07-14 89 views
0

我一直在努力部署我對Heroku的應用程序,當我嘗試用Rails的:ActiveRecord的:: NoDatabaseError FATAL:數據庫 「sale_development」 不存在

軌服務器-b $ IP -p $ PORT運行服務器

它不斷給我,說 的ActiveRecord :: NoDatabaseError錯誤 FATAL:數據庫 「sale_development」 不存在

這裏是我的database.yml

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
# 
default: &default 
    adapter: postgresql 
    encoding: unicode 
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 

development: 
<<: *default 
    database: sale_development 


test: 
    <<: *default 
    database: sale_test 


production: 
<<: *default 
database: sale_production 
    username: sale 
    password: <%= ENV['SALE_DATABASE_PASSWORD'] %> 

我不明白的是爲什麼它說:「sale_development」不存在 應該存在的,因爲銷售是我叫我的應用程序

+0

將代碼推送到Heroku之後,你運行了'heroku run rake db:migrate'嗎?你必須運行它。而且Heroku不會在你的代碼中使用'database.yml',所以它沒關係。 – Sajan

+0

你是什麼意思推?如果我運行heroku運行rake db:migrate,它表示沒有指定應用程序 – bockdavidson

+0

如何部署應用程序?我認爲你通過推送代碼到Heroku的遠程URL來通過git進行部署。無需部署方法,爲了解決'無應用指定'錯誤,請從您的應用目錄運行該命令。 – Sajan

回答

0

當您嘗試部署會發生什麼名字?這是您第一次部署應用程序嗎?

當您運行rails server -b $IP -p $PORT時,您要麼綁定到錯誤的IP,意味着命令在本地運行,而您尚未創建開發數據庫。或者您已成功運行帶有該IP的rails server命令,但未能爲環境包含-e標誌,因此默認情況下,您的應用程序將與開發環境一起運行。在這種情況下,將標誌-e production添加到您的命令中。

在附註中,我不確定爲什麼您希望首先在heroku上運行rails server命令,因爲在部署過程中不需要它。

如果問題在於您已成功部署,但您沒有運行db:heroku run rake db:create,隨後heroku run rake db:migrate

+0

是的,這是我第一次 – bockdavidson

+0

我試過-e生產命令,什麼都不做 – bockdavidson

+0

@bockdavidson'heroku運行rake db:create'和'heroku運行rake db:migrate'呢?請記住,在第一次部署後運行'heroku run rake db:create',然後遷移,因爲這些命令不會自動運行。再次說明,沒有必要在heroku上運行rails服務器,只要您部署時自動啓動的app rails服務器沒有問題;所以我不確定你爲什麼試圖在heroku上運行rails服務器。尾日誌,看看發生了什麼錯誤。 – alex1sz

相關問題