【问题标题】:Rails Heroku Database PopulationRails Heroku 数据库人口
【发布时间】:2011-09-16 03:23:41
【问题描述】:

部署 Heroku 应用程序后,我无法在数据库中填充我需要的一些数据。我运行了 heroku rake db:populate,它确实创建了初始管理员用户,但未能将其余数据放入。

我正在使用本地磁盘中的文件填充数据库。我怀疑问题是因为它在 sample_data.rake 文件中列出的目录中没有看到任何内容,因为它在我的硬盘上而不是服务器上。我怎样才能解决这个问题?

我认为我必须托管所有文件并将目录更改为服务器目录,或者找到解决此问题的方法。我想有一种简单的方法可以将数据库从我的计算机移动到 heroku?我显然对此很陌生。

谢谢!

【问题讨论】:

  • 不是一个真正的答案,但您是否考虑使用种子数据而不是从本地磁盘加载数据?见文件db/seeds.rb和任务rake db:seed

标签: ruby-on-rails database ruby-on-rails-3 sqlite heroku


【解决方案1】:

如果你有一个干净的本地数据库(即只有好东西,没有愚蠢的测试数据),那么你可以试试heroku db:push

db:push [<database_url>] # 将本地数据库推送到应用程序的远程数据库中

如果您要使用 Heroku 共享或专用数据库,请记住在 PostgreSQL 上进行开发,在您的开发和生产环境中使用相同的数据库和版本(共享版本为 8.3,专用版本为 9.0)将节省您的时间很多痛苦、痛苦和困惑。

参考资料:

【讨论】:

  • 如果您只想上传单个表格,或者向现有表格添加数据怎么办?
  • @B 七:heroku help db:push 会告诉你怎么做。
  • 谢谢 mu,没有办法让它发出更新语句而不是一揽子替换表吗? (除了使用 psql)
  • @c.apolzon:我不这么认为,但我不确定。我认为标准任务中没有完整的数据库合并。你可以拉下一个副本,手动做你的差异,然后在迁移中将这些差异发回,但我想不出其他任何事情。
  • heroku help db:push 不再工作。更新后的命令是 heroku help 或更具体地说是 heroku help pg。从那里继续前进
【解决方案2】:

我设置了开发数据库,​​并将其推送到 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")

【讨论】:

    【解决方案3】:

    heroku 命令已更改。现在应该是:

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

    也可以通过安装 taps gem 并从本地 PostgreSQL 数据库推送数据,将本地数据库中的数据上传到 heroku。

    gem install taps
    heroku db:push 
    

    【讨论】:

      猜你喜欢
      • 2016-01-26
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      相关资源
      最近更新 更多