所以我已经按照我在网上找到的有关此问题的所有指南,包括类似的堆栈帖子,但事情不起作用。
我运行了命令
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:setup
和rails 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中的一些唯一约束错误。这样做了!