我有一个现有的Ruby on Rails应用程序,它已经加载了数据。
我使用了默认的SQLite数据库设置,因此这是我所有数据所在的位置,但是我需要所有数据都进入heroku上的Postgres数据库。
我该怎么做?
10 分钟 从本地SQLite移动到Heroku Postgres
。 --在此过程中将本地开发人员更新为帖子 --
这是假设你在sqlite中有一个开发数据库,并且你想将结构和数据移动到heroku。 您将首先将本地环境更改为 postgres,然后将其全部向上移动。
为什么要改变?应始终让开发环境反映生产环境。 使用 Postgres 是 heroku 的默认方法。
您需要首先使用具有您用户名的用户在本地安装和配置 Postgres。
所需软件:postgresql,pgloader,heroku-cli
步骤
在开发环境中从 SQLite 迁移到 Postgres,在开发环境中
- 安装 Heroku/PGloader/Postgres,并确保 PostgreSQL 在您的系统上运行
- 备份 SQLite - 复制开发.sql到development_old.sql
- 将
gem 'pg'
添加到宝石文件的主要部分 - 捆绑安装
- Update config/database.yml(参见下面的示例(
- 耙子数据库:设置
- CD [应用程序根目录]
- 用数据加载 Postgres 数据库 -
pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
- 删除
gem 'sqlite3'
- 捆绑安装
- 启动服务器 -
rails server
- 通过访问本地主机的应用程序进行测试:3000
在 heroku 上设置新应用程序
按照 heroku 的这些说明进行操作
将数据移动到 heroku
- 查找 Heroku 数据库信息 -
heroku pg:info
- 擦除和重置远程数据库 -
heroku pg:reset DATABASE_URL --app [name of app]
- 将本地数据推送到Heroku -
heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]
注意:如果该数据库的行数大于 10k,则还需要升级到 heroku 上的爱好基础层
将英雄升级到爱好等级基础
- 创建新层 - 'Heroku 插件:创建 Heroku-PostgreSQL:Hobby-Basic --应用 [应用程序名称]
- 获取新的数据库 URL -
heroku pg:info
- 打开维护 -
heroku maintenance:on --app [name of app]
- 复制数据 -
heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- 提升新数据库 -
heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- 关闭维护
- 通过访问 Heroku 应用程序进行测试
如果您遇到问题或边缘情况,这里有一些资源可以提供帮助。
资源:
- https://pgloader.io
- Postgres install docs
- 希罗库新导轨安装
- 希罗库 CLI 信息
- 使用 Heroku CLI
database_sample.yml
default: &default
adapter: postgresql
encoding: unicode
host: localhost
port: 5432
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: [name of app]_dev
test:
<<: *default
database: [name of app]_test
staging:
<<: *default
database: [name of app]
production:
<<: *default
database: [name of app]
嘿,伙计,你在下面的链接中拥有你需要的一切
如何从SQLite更改为PostgreSQL并在heroku上部署
如果您还有疑问,请告诉我 问候