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

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 数据库总是自动清空。因此,为了解决这个问题,我们通常需要直接通过电子邮件将更新的数据库发送给其他人,然后他们再将其用于其本地存储库中替换空白的数据库。我怀疑这就是 heroku rake db:migrate 命令的原因。
但既然我们在开发过程中已经走到了这一步,我们真的承受不起重新开始的代价。有没有一种方法可以将本地存储库数据库的内容填充到远程 Heroku 数据库中?感谢您的回复。

1
https://dev59.com/n2HVa4cB1Zd3GeqPrecR - Zippie
如果 heroku db:push 没有起作用,那就需要修复它,这是最简单的方法。 - Leonel Galán
嗨,Zippie,我忘了说我也尝试过heroku db:push,但它也不起作用。我该怎么办? - Shikasan
1个回答

4
你应该将数据从sqlite导出到一个sql dump文件,并开始在本地使用postgres。如果你继续在本地使用sqlite,而在远程使用postgres,会遇到很多问题。
当你在本地迁移完毕后,请按照这份指南 《使用PG备份导入和导出Heroku Postgres数据库》 来操作。
另外,请不要使用db:pushdb:pull,因为它们已经被废弃了。 更新 要将sql文件导入本地的postgres中,请首先安装和设置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

嗨,感谢您的回复。现在我有一个从sqlite3数据库导出的.sql文件,但我不知道该怎么做。您提供的链接似乎假定我从一开始就使用Postgres。 - Shikasan
请查看我的另一个答案:https://dev59.com/2WUp5IYBdhLWcg3wf3oG#15237594,以及Heroku DevCenter上的指南:https://devcenter.heroku.com/articles/heroku-postgres-import-export。这些都将有助于将数据导入到Heroku Postgres中。 - catsby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接