2011-06-16 33 views
6

部署Heroku的應用程序後,我無法使用我需要的一些數據填充數據庫。我運行了heroku rake db:populate,它確實創建了初始管理用戶,但未能將其餘數據放入。Rails Heroku數據庫人口

我使用本地磁盤中的文件填充數據庫。我懷疑問題是由於它在sample_data.rake文件中列出的目錄中沒有看到,因爲它在我的硬盤而不是服務器上。我怎樣才能解決這個問題?

我想我必須承載所有文件並將目錄更改爲服務器目錄,或者找到解決辦法。我猜想有一種簡單的方法將數據庫從我的電腦移至heroku中?我顯然對此很新。

謝謝!

+0

不是一個真正的答案,但你有沒有考慮使用種子數據,而不是從本地磁盤加載數據?請參閱文件'db/seeds.rb'和任務'rake db:seed' – 2011-06-16 07:40:06

回答

9

如果你有一個乾淨的本地數據庫(即剛剛好東西,沒有愚蠢的測試數據),那麼你可以嘗試heroku db:push

db:push [<database_url>]#推動本地數據庫到應用程序的遠程數據庫

如果您打算使用Heroku共享或專用數據庫,在開發和生產環境中使用相同的數據庫和版本(版本8.3用於共享,專用版本爲9.0),請記住在PostgreSQL上開發將節省您許多痛苦,痛苦和混亂。

參考文獻:

+1

如果您只想上傳單個表或將數據添加到現有表中,該怎麼辦? – 2011-08-20 14:10:31

+1

@B七:'heroku help db:push'會告訴你如何。 – 2011-08-20 20:17:59

+0

謝謝畝,有沒有辦法讓它發佈更新聲明,而不是毛毯更換表在那裏? (除了使用psql) – 2012-07-09 05:29:02

3

我設置開發數據庫,​​並將其推送到Heroku的。

rake db:reset 
rake db:seed 
heroku rake db:push 

如果您使用的是默認的PostgreSQL,另一個選擇是

heroku pg:reset 
heroku rake db:seed

我用在seed.rb文件中的以下內容:

require 'pathname' 
RailsRoot = Pathname.new(RAILS_ROOT).expand_path 

print "Loading data..." 
fileData = File.read (RailsRoot + "db/data-file.csv")
+1

所有'heroku db:'命令現在'heroku pg:' – ahnbizcad 2014-11-06 00:44:17

12

Heroku的命令已經改變。現在它應該是:從本地數據庫


heroku run rake db:push 
heroku pg:reset DATABASE 
heroku run rake db:seed 

數據也可以通過安裝水龍頭的寶石,並從本地的PostgreSQL數據庫將數據推上傳到Heroku的。

gem install taps 
heroku db:push