Rails 3(3.0.7)プロジェクトのPostgreSQLデータベースとして使用するためにWindows7にPostgresをインストールするためのアプローチ。
前文 (このビットはスキップできます)
したがって、最初に指摘するのは、Postgresは.sqlite3とは異なるファイル拡張子であるだけでなく、データベースを管理するためのメカニズム全体であるということです。そのため、クライアント/サーバーモデルがあり、RailsアプリのデータベースとしてPostgresを使用するには、両方を設定する必要があります。
Postgresのセットアップとほとんど楽なsqliteのセットアップのかなりの苦痛を経験する動機:Herokuにデプロイしている場合、彼らは現在Postgresを使用しているため、sqlite3で正常なSQL呼び出しの一部はPostgresで使用すると壊れます。 postgresをHerokuのサーバー上にある場合よりも、ローカルでデバッグする方がはるかに簡単です。
だから私は次のことをしました:(免責事項:私がしたことのいくつかを含めるのを忘れたかもしれません...それが機能するようになるまでに48時間以上のオンとオフの痛みがかかりました...次のアドバイスがない場合巨大な(2300ページ!!)が非常に徹底的なPostgresドキュメントが役立つはずです。Postgresの使用を真剣に考えている場合は、まだ始めたばかりの資料がたくさんあるので、とにかくこれをダウンロードすることをお勧めします。の重要性を理解するために。)(2番目の免責事項:私はほぼ確実に20の賢明なPostgresガイドラインを破り、Postgresデータベースのセキュリティホールを公開しました。経験豊富なPostgresユーザーが同意しない明らかなことがあれば、私の投稿を編集してください。)
。ステップ1。 ここからPostgreSQLv9.0.4-1をダウンロードしてインストールします。これは、Windows 7では9.0.xのみがサポートされると述べているためです。すべてのデフォルトオプションを保持し、Postgresインストーラーによってプロンプトが表示されたときにパスワードとして「secret」を使用しました(ここでもインターネット上でその情報を共有することの結果が何であるか完全にはわかりません...すぐに私が確信していることがわかります)。手順3でこのパスワードが必要になります。
。ステップ2。 パス(システムの場合)のように環境変数を変更します 、ユーザーではありません(これが重要かどうかはわかりません))は次のとおりです: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を起動すると、左側に「オブジェクトブラウザ」というパネルが表示されます。これには、次のようなツリーが必要です。
サーバーグループ>サーバー>PostgreSQL9.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
という2つのデータベースをリストする必要があります およびpostgres
私はそれを_as_postgres
と呼びました -U postgres
のため コマンドの一部は、postgresユーザーを所有者としてデータベースを作成するようにPostgresに指示します。これは、postgresユーザーとしてサインインしていない場合に指定する必要があります。すべてのファイルを「AJames」ユーザーとして保存しているので、同じで、別のユーザーとしてサインインしたときにアプリの開発を続けたい場合は、そのユーザーの「Postgres」ロールを今すぐ作成する必要があります(手順を参照) 4)。
。ステップ4。 pgAdminIIIを介して。ログインロール(私にとってはログインロール)を右クリックします:
オブジェクトブラウザ>サーバーグループ>サーバー>PostgreSQL9.0(localhost:5432)>ログインロール
ログインロールを右クリックし、ロール名で[新しいログインロール...]を選択し、オペレーティングシステムのユーザー名(私にとってはAJames)を入力し、[ロール権限]タブにパスワードを入力します。すべてチェックしました。ボックスですが、経験豊富なpostgresユーザーは、「親ロールから権限を継承する」と「データベースオブジェクトを作成できる」のみをチェックすることを強くお勧めします。しかし、私は経験豊富なユーザーではなく、PostgresでRailsSQL呼び出しをデバッグしたいだけです。念のため、「スーパーユーザー」と「役割を作成できる」も確認しました。
。ステップ5。 これで、postgresユーザーとしてサインインしなくても新しいデータベースを作成できるようになります。入力してみてください:
createdb mydb_as_user
うまくいけば、これはあなたのために働くはずです。
。ステップ6。 さて、あなたはあなたのrails'db/'ディレクトリにdevelopment.sqlite3ファイルを持っています。最初は、これをsqlite3からpsqlに変換するように次のテストを設定する予定でした。
これを機能させることはできませんでしたが、使用したソリューションではRailsアプリのデータをオンにする必要があるため、ここで試行を残しました。 Heroku.com(代わりにステップ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をチェックインすると、次の表が表示されます。
オブジェクトブラウザ>サーバーグループ>サーバー>PostgreSQL9.0(localhost:5432)>データベース>mydb_as_user>スキーマ>public>テーブル>users_table>
x6.3さて、次に変換を試してください。 Windows用のsqlite-shellプリコンパイル済みバイナリをダウンロードしました。
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信じる):
。ステップ7。 pgAdminIIIで別のデータベースを作成しました。 [プロパティ]タブで、名前:'development'、所有者:'AJames'を設定しました(これを独自のWindowsユーザー名に置き換えてください)。そして、[権限]タブで、role:'public'を設定し、[ALL]オプションをオンにします(これはオフにリセットされるため、必要かどうかはわかりません)。
。ステップ8。 add gem 'pg', '0.11.0'
あなたのgemファイルに。おそらく、:gem 'sqlite3'
も削除することをお勧めします。 この時点でも。
。ステップ9。 ここで提案されているように、database.ymlを次のように設定します。
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。 heroku db:pull
を実行します コマンドラインから(これもrailsアプリのルートディレクトリから)、すべてのデータを新しい空のPostgresデータベースにプルします。この時点で、あなたの蛇口の宝石があなたのためにこの仕事をしていると思います。
。ステップ12。 うまくいけば、ステップ12はありません! ...そしてそれはあなたのために働いているはずです。ハッピーRoRPostgreSQLデバッグ!これにエラーがある場合は、編集するか、私に知らせてください。
また、ここに興味深い/役に立つかもしれない追加のもののリストがあります:
- これは、Postgresのパスワード、その目的、必要な理由、パスワードの変更方法などに関するブログ投稿です。
- これは、「空間データベースの作成」の下で、初心者がpg_hba.confの内容を理解するのに役立ち、「pgAdmin III GUIの使用」の下で、Renoが上に示した2番目のリンクは、postgresが実際に機能しているかどうかをテストするのに役立ちます。 、Railsに適合させる前に(つまり、データベースを作成し、テーブルといくつかのデータをデータベースに配置してみてください)。
- 巨大ですが非常に包括的なPostgresのドキュメントでは、58ページから始めます。チュートリアル'。次に、PDFページ431(!)に、「第17章サーバーのセットアップと操作」があります。これも便利です。