将Heroku postgresql DB克隆到本地数据库以获取" live"测试

时间:2018-04-07 13:00:43

标签: ruby-on-rails postgresql heroku

所以我已经按照我在网上找到的有关此问题的所有指南,包括类似的堆栈帖子,但事情不起作用。

我运行了命令

heroku config:get DATABASE_URL

得到了

postgres://<username>:<password>@<host_name>:<port>/<dbname>

(所有&lt;&gt;部分当然是我的数据库信息)并运行

pg_dump --host=<host_name> --port=<port> --username=<username> --password <dbname> > output.sql

此时我需要运行

psql -d <local_database_name> -f output.sql

但我的rails应用程序遵循使用sqlite3的Michael Hartl教程,所以我不得不改变一切。我通过将database.yml文件更改为

来尝试此操作
# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: postgresql
  encoding: unicode
# adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development
# database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test
# database: db/test.sqlite3

production:
  <<: *default
  database: db/production
# database: db/production.sqlite3

我还更改了Gemfile以使用&#39; pg&#39;而不是&#39; sqlite3&#39;开发中。此时我运行了bundle install并尝试了rails db:setuprails db:migrate,它们没有创建数据库(...呃哦),当我运行

的最后一步时

psql -d db/development -f db/output.sql

我获得了大量的控制台输出,但是当我运行rails控制台沙箱时,我的Heroku数据库中没有用户信息。我错过了一步吗?发生了什么事? (我正在使用Ubuntu 14.04)

修改

首先,我解除了上面所做的所有局部更改。然后,我最后按照上面的指南和指南进行了组合http://manuelvanrijn.nl/blog/2012/01/18/convert-postgresql-to-sqlite/。我使用heroku config:get DATABASE_URL获取所有需要的主机,端口,用户名等信息,然后使用

提取数据
pg_dump --host=<host_name> --port=<port> --username=<username> --password --data-only --inserts <dbname> > dump.sql

之后我跟着postgresql进行sqlite数据库转换(&#34;更长的故事a.k.a请解释一下。&#34;版本)我在上面链接。我完成了步骤2中描述的所有编辑,并且必须在SELECT的末尾删除一堆dump.sql语句。我必须做的另一项更改是用INSERT INTO替换所有INSERT OR REPLACE INTO个实例以满足步骤4中的一些唯一约束错误。这样做了!

0 个答案:

没有答案