无法将本地production.sqlite3推送到远程heroku postgresql DB

时间:2013-09-20 14:37:49

标签: ruby-on-rails database postgresql heroku sqlite

我是移动设备程序员,我是数据库,网络,服务器编程的新手,这个问题让我生病了:(

我整天都在挖这种情况,没有答案可以解决我的问题。

我的Ruby on Rails项目中有production.sqlite3,这是在生产模式下使用sqlite3 DB的AWS服务器。

现在我使用postgresql DB将此应用程序上传到heroku,没有数据(空),更改sqlite3 - > postgresql在生产模式下。

我想将production.sqlite3中的数据传输到空删除postgresql DB。

我该怎么做?我无法理解我是如何实现这一目标的。

1)本地sqlite3 - >远程空postgresql DB直接?

2)本地sqlite3 - >本地postgresql(迁移) - >远程空postgresql DB?

我通过macports安装了postgresql92(因为heroku远程postgresql版本),

所以路径是'/ opt / local / lib / postgresql92'。

我试过

  • PG:转移

  • 的psql

  • pg_ctl

并且仍然不知道这样做。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

最好在所有环境中使用相同的数据库。我还不能发表评论要求澄清,所以我会尽力回答你的问题。对不起,如果我太基本了。

如果您需要将数据从SQLite传输到PostgreSQL数据库,则必须使用https://github.com/ricardochimal/taps等工具手动执行此操作。您必须设置本地PostgreSQL数据库并从SQL数据库导入数据。然后,您可以使用以下命令将数据推送到heroku:

db:push [<database_url>] # push a local database into the app's remote database

将PostgreSQL gem添加到Gemfile

gem 'pg'

使用PostgreSQL的示例database.yml文件

development:
  adapter: postgresql
  encoding: unicode
  database: app_development
  pool: 5


test:
  adapter: postgresql
  encoding: unicode
  database: app_test
  pool: 5


production:
  adapter: postgresql
  encoding: unicode
  database: app_production
  pool: 5

接下来,您需要创建数据库

rake db:create:all

确保在所有这些之后rails开发数据库是psql(运行rails db)

这就是你确保rails使用psql的方法。