如果我的特殊情况已经在这个论坛上得到解答,我不会问这个问题,所以请原谅我重新提问。
我有一个使用 sqlite3 数据库进行开发的 Rails 应用程序,它已经包含了应用程序所需的所有数据。将此应用程序推送到 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 数据库的内容填充远程 heroku 数据库?感谢您的回复
最佳答案
您应该将数据从 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
关于ruby-on-rails - Rails : Populate Heroku database with development. sqlite3 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371394/