Rails:使用development.sqlite3数据填充Heroku数据库

如果我的特殊情况已在本论坛上得到解答,我不会问这个,所以请原谅我的重新询问。

我有一个rails应用程序,它使用sqlite3数据库进行开发,它已经包含了我需要的所有数据。 在将此应用程序推送到heroku时,我无法在那里查看应用程序,直到我必须运行heroku run rake db:migrate。 现在我可以查看该应用程序,但我无法使用管理员帐户登录或执行任何其他需要数据库数据的事情。 我已经做了所有我需要的(我认为),如下面的gem文件中所示:

source 'https://rubygems.org' gem 'rails', '3.2.12' gem 'bcrypt-ruby' gem 'kaminari' gem 'gon' . . . gem 'jquery-rails', '2.0.2' group :development, :test do gem 'sqlite3', '1.3.7' end group :production do gem 'pg', '0.12.2' end . . 

我也尝试过heroku db:push,但这也没有帮助。 主要问题是我正在和其他人一起使用这个应用程序,我们使用github进行版本控制。 但每当我从彼此获得更新时,我们的sqlite数据库似乎总是自己清空。 因此,为了解决这个问题,我们通常必须将更新的数据库直接通过电子邮件发送给另一个人,然后他们继续使用它并在他的本地仓库中替换空的。 我怀疑heroku rakedb:migrate之所以如此。

但是,随着我们在发展中走得很远,我们真的无法重新开始。 有没有办法我们可以使用本地repo db的内容填充远程heroku数据库? 谢谢你的回复

您应该将数据从sqlite导出到sql转储文件并开始在本地使用postgres。 如果您继续在本地使用sqlite并远程使用postgres,那么您将度过难关。

在本地迁移后,请按照本指南使用PG备份导入和导出Heroku Postgres数据库。

另外,不要使用db:pushdb:pull ; 他们被弃用了。

更新

要在本地postgres中获取sql文件,首先安装并设置postgres(Homebrew,macports, other …),然后执行以下操作:

 $ psql -U user -d database < file.sql 

从那里,您可以使用pg_dump实用程序导出到.dump文件。 您也可以直接将sql导入Heroku Postgres:

 # this will delete ALL data in your postgres, so make sure it's what you want $ heroku pg:reset HEROKU_POSTGRESQL_COLOR --app app_name $ heroku pg:psql HEROKU_POSTGRESQL_COLOR --app app_name < file.sql