sql >> データベース >  >> RDS >> PostgreSQL

既存のRailsアプリをherokuに移動するにはどうすればよいですか? (sqliteからpostgresへ)

    ローカルSQLiteからHerokuPostgresへの10分間の移動

    -途中でpostgresにローカル開発者を更新します-

    これは、sqliteに開発データベースがあり、構造とデータをherokuに移動することを前提としています。最初にローカル環境をpostgresに変更し、次にすべてを上に移動します。

    なぜ変わるのですか?開発環境は常に本番環境を反映している必要があります。 Postgresの使用はherokuのデフォルトです。

    まず、自分のユーザー名を持つユーザーを使用して、Postgresをローカルにインストールして構成する必要があります

    必要なソフトウェア:postgresql、pgloader、heroku-cli

    ステップ

    開発環境でSQLiteからPostgresに移行

    1. heroku / pgloader / postgresをインストールし、postgresqlがシステムで実行されていることを確認します
    2. backupsqlite-development.sqlをdevelopment_old.sqlにコピーします
    3. gem 'pg'を追加します Gemfileのメインセクションへ
    4. バンドルインストール
    5. config / database.ymlを更新します(以下のサンプルを参照)
    6. rake db:setup
    7. cd[アプリケーションルート]
    8. postgresdbにデータをロードする-pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
    9. gem 'sqlite3'を削除します
    10. バンドルインストール
    11. サーバーの起動-rails server
    12. localhost:3000のアプリにアクセスしてテストします

    herokuに新しいアプリをセットアップする

    herokuからのこれらの指示に従ってください

    データをherokuに移動する

    1. herokudbinfoを見つける-heroku pg:info
    2. リモートデータベースを消去してリセットします-heroku pg:reset DATABASE_URL --app [name of app]
    3. ローカルデータをherokuにプッシュします-heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]

    注:そのデータベースの行数が10,000を超える場合は、herokuの趣味の基本階層にもアップグレードする必要があります

    HerokuをHobbyTierBasicにアップグレードする

    1. 新しい層を作成する-`herokuaddons:create heroku-postgresql:hobby-basic--app[アプリの名前]
    2. 新しいデータベースのURLを取得する-heroku pg:info
    3. メンテナンスをオンにする-heroku maintenance:on --app [name of app]
    4. データのコピー-heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
    5. 新しいdbをプロモートします-heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
    6. メンテナンスをオフにする
    7. herokuアプリにアクセスしてテストする

    問題やエッジケースが発生した場合に役立つリソースを以下に示します。

    リソース:

    • https://pgloader.io
    • postgresインストールドキュメント
    • herokuの新しいレールのインストール
    • herokucli情報
    • herokucliを使用する

    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]
    


    1. JOINクエリと複数のクエリ

    2. MySQL / PHPエラー:[2002]通常、各ソケットアドレス(プロトコル/ネットワークアドレス/ポート)の使用は1回のみ許可されます

    3. PDO接続テスト

    4. MySQLクエリでタイムスタンプを日付に変換する