web-dev-qa-db-ja.com

Ruby-on-Railsで使用するためのWindowsへのPostgresのインストール

現在、次のエラーが発生します。

PGError(FATAL:ユーザー "postgres"のパスワード認証に失敗しました):

アプリがデータベースにアクセスしようとしたとき。

Sqlite 3よりもpostgresの要件が厳しいため(おそらく健全なことだと思います)、Herokuで本番環境にプッシュするとアプリが定期的に中断するため、SQL呼び出しをpostgresに対してテストしたかったので、同様のリクエストがあります- これに Ruby on Rails on windows(7)please。ダウンロードとインストールは20分ほどで完了しますが、2時間後、まだ近づいていないと思います。これまでのところ、次のようになっています。

ダウンロードしてインストールしたPostgresバージョン8.4.8-1 ここから

Path(ユーザー用)が次のようになるように環境変数を設定します:C:\Ruby192\bin;C:\Program Files (x86)\PostgreSQL\8.4\bin

Gemfile:

gem 'pg', '0.11.0'  # instead of gem 'sqlite3', '1.3.3'

実行されたbundle install for my Rails appは一見成功しているようですが、インストールを検証する簡単な方法がまだ見つかりません。

database.yml ここで提案されているように を次のように設定します:

development:
  adapter: postgresql
  database: db/development
  username: postgres
  password: secret
  Host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000

Postgresのユーザー名とパスワードを設定するpostgresサーバーを起動して接続する(?) そしてローカルIPアドレスを入力する必要があることはわかっていますI ' どこかの設定ファイルに に接続し、' C:\ Program Files(x86)\ PostgreSQL\8.4\data 'などにある他の.confファイルの1つを編集します。

Railsは私を柔らかくしてくれたと思います、私は物事を考えすぎているのでしょうか、それとも実際にセットアップするのはかなり難しいので、Sqlite3に戻る必要があります。これには非常に便利なSQLiteマネージャーもあります。 Firefoxプラグイン?

私はまだPostgresをインストールして使用するための初心者向けガイドを探していますRailsですが、これまでのところ、私が見ている/フォローしようとしているもののほとんどに混乱しているだけです thisthisthisthisthis (Snow Leopardの場合)、 this (linux)。

どんなポインタでも大歓迎です。ありがとう!

ジェームズ

19
AJP

Rails3(3.0.7)プロジェクトのPostgreSQLデータベースとして使用するためにWindows7にPostgresをインストールするアプローチ。


Preamble(このビットはスキップできます)

したがって、最初に指摘するのは、Postgresは.sqlite3とは異なるファイル拡張子であるだけでなく、データベースを管理するためのメカニズム全体であるということです。そのため、クライアント/サーバーモデルがあり、PostgresをRailsアプリのデータベースとして使用するには、両方を設定する必要があります。

Postgresセットアップとほとんど楽なsqliteセットアップのかなりの苦痛を経験する動機:Herokuにデプロイしている場合、現在Postgresを使用しているため、sqlite3で正常なSQL呼び出しの一部がPostgresで使用すると壊れます。 postgresをHerokuのサーバー上にある場合よりも、ローカルでデバッグする方がはるかに簡単です。

だから私は次のことをしました:(免責事項:私がしたことのいくつかを含めるのを忘れたかもしれません...それを機能させるのに48時間以上のオンとオフの痛みがかかりました...次のアドバイスがない場合巨大な(2300ページ!!)が 非常に徹底的なPostgresドキュメント が役立つはずです。Postgresの使用を真剣に考えている場合は、私が持っている資料がたくさんあるので、とにかくこれをダウンロードすることをお勧めします。の重要性を理解し始めたばかりです。)(2番目の免責事項:私はほぼ確実に20の賢明なPostgresガイドラインを破り、Postgresデータベースのセキュリティホールを公開しました。経験豊富なPostgresユーザーが同意しない明らかなことがあれば、編集してください。私の投稿。)


.Step 1.here からPostgreSQLv9.0.4-1をダウンロードしてインストールします。 here は、Windows7では9.0.xのみがサポートされると述べているためです。 。私はすべてのデフォルトオプションを保持し、Postgresインストーラーによってプロンプトが表示されたときにパスワードとして「secret」を使用しました(インターネット上でその情報を共有した結果がどうなるかは完全にはわかりません...すぐに私が承知しました)。手順3でこのパスワードが必要になります。

。ステップ2.パス( for system、not user (I 'これが重要かどうかわからない))は:_C:\Program Files\PostgreSQL\9.0\bin_
(n.b。64ビットウィンドウを使用しているため、 'C:\ Program Files(x86)\ PostgreS ...'に32ビット用にインストールされていません)

フォルダPostgreSQL\9.0へのアクセス権を変更し、フォルダまたはコンテンツのデフォルトの読み取り専用権限を削除することを忘れないでください。 (これらを有効にするには、コンピューターを再起動する必要がある場合もあります-@ Gavinに感謝します-可能性は低いですが)。

。ステップ3.新しいデータベースを作成してPostgresのインストールをテストします。コマンドラインから:_createdb -U postgres mydb_as_postgres_。今すぐパスワードを入力するように求められます。そうでない場合は、最初にサーバーを起動する必要がある可能性があります(これを行う必要があるかどうかは思い出せません)。最も簡単な方法は、pgAdmin IIIを使用することです。これは、_C:\Program Files\PostgreSQL\9.0\bin_のようなフォルダー内の「pgAdmin3.exe」である必要があります。 pgAdmin IIIを起動すると、左側に「オブジェクトブラウザ」というパネルが表示されます。これには、次のようなツリーがあります。

サーバーグループ>サーバー> PostgreSQL 9.0(localhost:5432)

「PostgreSQL9.0(localhost:5432)」を右クリックし、「接続」を選択します。

_createdb -U postgres mydb_as_postgres_コマンドは、「mydb_as_postgres」という新しいデータベースを作成する必要があります。これは、pgAdmin IIIを起動し、「PostgreSQL 9.0(localhost:5432)」をダブルクリックすることで確認できます。この下にあるはずです:

Databases (2)これは_mydb_as_postgres_とpostgresという2つのデータベースをリストする必要があります

コマンドの__as_postgres_部分は、postgresユーザーを所有者としてデータベースを作成するようにPostgresに指示するため、これを_-U postgres_と呼びました。これは、postgresユーザーとしてサインインしていない場合に指定する必要があります。すべてのファイルを「AJames」ユーザーとして保存しているので、同じで、別のユーザーとしてサインインしたときにアプリの開発を続けたい場合は、そのユーザーのPostgres「ロール」を今すぐ作成する必要があります(手順を参照) 4)。

。ステップ4. pgAdminIIIを介して。ログインロール(私にとっては)を右クリックします。

オブジェクトブラウザ>サーバーグループ>サーバー> PostgreSQL 9.0(localhost:5432)>ログインロール

ログインロールを右クリックし、ロール名で[新しいログインロール...]を選択し、オペレーティングシステムのユーザー名(私にとってはAJames)を入力し、[ロール権限]タブにパスワードを入力します。すべてチェックしました。ボックスですが、経験豊富なpostgresユーザーは、「親ロールから権限を継承する」と「データベースオブジェクトを作成できる」のみをチェックすることを強くお勧めします。しかし、私は経験豊富なユーザーではなく、デバッグしたいだけですRailsSQLはPostgresで呼び出されるので、念のために「スーパーユーザー」と「ロールを作成できます」も確認しました。

。ステップ5.これで、postgresユーザーとしてサインインしなくても新しいデータベースを作成できるようになります。入力してみてください:

_createdb mydb_as_user_

うまくいけば、これはあなたのために働くはずです。

。ステップ6.さて、Rails'db /'ディレクトリにdevelopment.sqlite3ファイルがあります。最初は、これをsqlite3からpsqlに変換するように次のテストを設定する予定でした。
これを機能させることはできませんでしたが、使用したソリューションではHeroku.comのRailsアプリにデータを含める必要があるため、ここで試行を残しました(代わりに手順のソリューションを参照してください) 7以降)。ローカルアプリのみを持ち、Herokuにデータがない場合は、同じアプローチを使用できないため、次のような方法を検討する必要があります。

x6.1まず、次のようなコマンドラインからコマンドを試して、「psql」をテストします。

_psql mydb_as_user_

これにより、次のように表示されます(パスワードを入力した後)。

_C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

mydb5=# 
_

x6.2入力してみてください:

CREATE TABLE users_table (id integer, "name" text);

次のように表示されます。

_CREATE TABLE
mydb5=#
_

PgAdmin IIIをチェックインすると、以下の表が表示されます。

オブジェクトブラウザ>サーバーグループ>サーバー> PostgreSQL 9.0(localhost:5432)>データベース> mydb_as_user>スキーマ>パブリック>テーブル> users_table>

x6.3さて、次に変換を試してください。 ダウンロードしたsqlite-シェル Windows用のプリコンパイル済みバイナリ。
x6.4新しいディレクトリを作成します。「C:\ temp」を使用して、sqlite3.exeファイルとdevelopment.sqlite3ファイルをその中に配置しました。
x6.5次のコマンド( ここ から)を使用して、development.sqlite3データベースをPostgresにダンプします。

_sqlite3 development .dump | psql development2_

次のようなエラーが発生する可能性があります。

_psql: FATAL: database "development2" does not exist_

x6.6なので、pgAdmin IIIにアクセスして、開発2データベースを作成し、コマンドを再試行して、次のようにしました。

_ERROR:  syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
        ^
BEGIN
COMMIT
_

私が言ったように、私はそれを動かすことができませんでした。そのエラーを回避する方法があると確信していますが、別の方法を考えたので、代わりにこのソリューションを使用しました(Herokuアカウントにデータが必要であり、Taps gemを使用してsqlite3からpsqlに変換します(I信じる):

.Step 7. pgAdminIIIで別のデータベースを作成しました。 [プロパティ]タブで、名前: '開発'、所有者: 'AJames'を設定しました(これを独自のWindowsユーザー名に置き換えます)。そして、[権限]タブで、役割: 'public'を設定し、[すべて]オプションをオンにします(これはオフにリセットされるため、必要かどうかはわかりません)。

。ステップ8. _gem 'pg', '0.11.0'_をgemファイルに追加します。この時点で:_gem 'sqlite3'_も削除することをお勧めします。

。ステップ9.database.ymlを ここで提案されているように設定します to:

_development:
  adapter: postgresql
  database: db/development
  username: AJames # replace this with your own user name
  password: secret # replace this with your own password
  Host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000
_

オープンソースプロジェクトに取り組んでいて、パスワードを公開したくない場合は、 データベースパスワードをRailsアプリ で安全に提供するための回答をいくつか見てください。 。

。ステップ10.Railsアプリのルートディレクトリのコマンドラインから実行:_rake db:migrate_これにより、新しいスキーマとすべてのテーブルが作成されますPostgresデータベース内。

。ステップ11.コマンドラインから(ここでもRailsアプリのルートディレクトリから)_heroku db:pull_を実行して、すべてのデータをダウンして、新しい空のPostgresデータベースに入れます。この時点で、あなたの蛇口の宝石があなたのためにこの仕事をしていると思います。


。ステップ12.ステップ12がないことを願っています! ...そしてそれはあなたのために働いているはずです。ハッピーRoRPostgreSQLデバッグ!これにエラーがある場合は、編集するか、私に知らせてください。

また、ここに興味深い/役に立つかもしれない追加のもののリストがあります:

72
AJP

あなたのリンクはどれも(おそらく)最も有用なドキュメントではないようでした 公式 postgresqlドキュメント。私は最近、postgresqlとDjangoこれらのドキュメントと これら の組み合わせを使用してLinux Mintボックスを構成しましたが、後者はLinuxに固有です。

Railsについてではなく、postgresql側の検証についてもっと心配したいと思います。つまり、Railsにロックする方法を知る必要があるよりも、「Windows7ボックスでpostgresqlサーバーをセットアップしてテストするにはどうすればよいですか」という質問をする必要があります。

編集:たぶん this もあなたに役立つかもしれません-詳細なインストールガイドを備えた公式のpostgresqlwiki。

幸運を!

2
Reno

aJPからの答えは、わずかな再構成で正しいものです。この線

    database: db/development 

私にはうまくいきません。私はそれをに変更する必要があります

    database: development

これをRuby on Railsコマンドに使用します

    rake db:create 

そして

    rake db:migrate

働く

2
Vincent Thieu