2011-08-07 3 views
5

私はSQLiteを使用するWebアプリケーションを持っています。私はPostgreSLQを使用するherokuに展開します。これは時々問題を引き起こし、私はSQLiteの代わりにPostgreSQLを使って自分のアプリケーションを開発することを勧められました。RORアプリケーションデータベースをSQLiteからPostgreSQLに変更

私は(テストと生産のための同じ)そのようなdatabase.ymlを修正すべきであることが判明:、

development: 
    adapter: postgresql 
    database: my_database 
    username: my_username 
    password: my_passwod 
    host: /var/run/postgresql or localhost 

まあ、私が今まで使用してきた唯一のデータベースはSQLiteのであるので、私はちょうど私のチャンスを撮ってみました失敗しました。私はいくつかのランダムなデータでこのファイルを埋めました。

は私が host: localhost

> could not connect to server: Connection refused Is the server running 
> on host "localhost" and accepting TCP/IP connections on port 5432? 

を使用するとするとhost: /var/run/postgresql

> could not connect to server: No such file or directory 
> Is the server running locally and accepting connections on Unix domain socket 
> "/var/run/postgresql/.s.PGSQL.5432"? 

私は私が最初にPostgreSQLサーバを起動する必要がありますと仮定しますが、どのようにこれを行うには考えている:

rake db:migrate

をもたらしました。 SQLiteアプリケーションから動作中のPostgreSQLアプリケーションに移動する方法をステップバイステップで教えてください。

+0

ここでは、Ruby on RailsとPostgresでローリングするためのチュートリアルです:http://vandenabeele.com/Rails-on-Ubuntu-Jaunty。 Postgresのためのステップバイステップの詳細は次のとおりです。http://www.yolinux.com/TUTORIALS/LinuxTutorialPostgreSQL.html – atrain

+0

可能な複製http://stackoverflow.com/questions/6710654/how-do-you-easily-change-from-sqlite-to-postgresql-in-rails –

答えて

2

psqlターミナルよりも使いやすいPGADMIN自体を含むPostgreSQLをダウンロードするようにお勧めします。

公式サイトからPostgreSQLをダウンロード/インストールすると、パッケージはすでに完成していると思います。

インストール時に、postgresqlは、postgresqlサーバーにアクセスする際に使用する特定のパスワードを要求します。

インストール後、PGADMINを開いてサーバーに接続します。パスワード(インストール時に宣言したパスワード)を入力します。

サーバーに接続できない場合は、ポートを編集します。これを行うには、サーバーを右クリックしてプロパティに行きます。ポートを空いているものに編集します。例:5433など。それはあなた次第です。すべては最終的にあなたのdatabase.ymlの

のための...セットアップの正しい設定を働いている場合

は、これは重要です:上記その設定情報からオーケー

development: 
    adapter: postgresql 
    database: name_of_database_here 
    host: localhost 
    username: postgres 
    password: your_db_server_password_here 
    pool: 5 
    timeout: 5000 
    port: 5433 

は、重要な部分を指定します。デフォルトでは、dbサーバーのユーザー名はpostgresです。開発中にセットアップしているため、明らかにホストはlocalhostです。

ポートがデフォルトで5432の場合は、ポート部分を削除してください。

あなたのgemfileに行きましょう。

あなたがherokuであなたのアプリを展開するために。 sqlite3の代わりにgem 'pg'を使用してください。

既存のsqlite3データベースをお持ちの場合は、gemを開発グループ内に配置してください。その場合、Herokuはgit push herokuマスタープロセスで正常にバンドルされます。

group :development do 
     gem 'sqlite3' 
end 

あなたgem 'pg'グループ外に行くか、本番グループに入れることができます。重要

任意の展開手順の前に、あなたは(ローカルホスト)ローカルでアプリケーションを実行できることを確認してください。それから、すべてが機能していれば、それは必要なものを適切に整理しなければならない時です。

アプリをHerokuにプッシュした後にsqlite3の代わりにPostgresqlに切り替えるには... pgbackups add-onとpg_restoreによってローカルのpostgresql dbサーバにダンプファイルを作成できます。

これだけです。それが役に立てば幸い。