2011-06-16 64 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