【问题标题】:Can't push local production.sqlite3 to remote heroku postgresql DB无法将本地 production.sqlite3 推送到远程 heroku postgresql DB
【发布时间】:2023-03-06 12:06:02
【问题描述】:

我是移动设备程序员,我是数据库、Web、服务器编程方面的新手,这个问题让我恶心:(

我为这种情况挖了一整天,没有答案能解决我的问题。

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

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

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

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

1) 本地 sqlite3 -> 直接远程清空 postgresql 数据库?

2) 本地 sqlite3 -> 本地 postgresql(迁移)-> 远程空 postgresql 数据库?

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

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

我试过了

  • pg:转移

  • psql

  • pg_ctl

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

【问题讨论】:

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


    【解决方案1】:

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

    如果您需要将数据从 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 的方式。

    【讨论】:

    • 我听说 heroku db:push 和 db:pull 已被弃用。这就是我寻找其他方法的原因。
    • 不,实际上以前的 SQlite3 DB 是用于生产的,使用了大约 1 年,这就是为什么我真的想把这个 DB 转移到新的。
    猜你喜欢
    • 2015-02-25
    • 2021-02-03
    • 2014-11-18
    • 1970-01-01
    • 2020-12-30
    • 2013-09-11
    • 1970-01-01
    • 2013-12-09
    • 2014-01-13
    相关资源
    最近更新 更多