如果我的特殊情况已在本论坛上得到解答,我不会问这个,所以请原谅我的重新询问。
我有一个rails应用程序,它使用sqlite3数据库进行开发,它已经包含了我需要的所有数据。在将此应用程序推送到heroku时,我无法在那里查看应用程序,直到我必须运行heroku run rake db:migrate。现在我可以查看该应用程序,但我无法使用管理员帐户登录或执行任何其他需要数据库数据的事情。我已经做了所有我需要的(我认为),如下面我的宝石文件所示:
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数据库?感谢您的回复
答案 0 :(得分:4)
您应该将数据从sqlite导出到sql转储文件并开始在本地使用postgres。如果您继续在本地使用sqlite并远程使用postgres,那么您将度过难关。
在本地迁移后,请按照Importing and Exporting Heroku Postgres Databases with PG Backups.
上的指南进行操作另外,请勿使用db:push
或db:pull
;它们已被弃用。
<强>更新强>
要在本地postgres中获取sql文件,首先安装并设置postgres(Homebrew,macports,其他 ...),然后执行以下操作:
$ 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