3

如果我的特殊案例已经在这个论坛上得到回答,我不会问这个问题,所以请原谅我的再次提问。

我有一个使用 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 数据库似乎总是自己清空。因此,为了解决这个问题,我们通常必须将更新后的数据库直接通过电子邮件发送给对方,然后对方继续使用它并替换他本地 repo 中的空 on。我怀疑 heroku rakedb:migrate 的原因是这样的。

但是,由于我们在发展中已经走到了这一步,我们真的负担不起重新开始。有没有一种方法可以使用本地 repo db 的内容填充远程 heroku 数据库?感谢您的回复

4

1 回答 1

4

您应该将数据从 sqlite 导出到 sql 转储文件并开始在本地使用 postgres。如果你继续在本地使用 sqlite 和远程使用 postgres,你将有一段糟糕的时光。

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

另外,不要使用db:pushor 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
于 2013-03-12T21:57:53.733 回答