0

今、私は Ubuntu と postgres に少し慣れていませんが、現在行っていることは次のとおりです。

Ubuntu では、postgres というユーザーを作成し、パスワードは postgress に設定しました。

$ sudo adduser postgres
Enter new UNIX password: (I typed ' postgres ' here)
Retype new UNIX password: (I typed ' postgres ' here)

次に、postgres ユーザーとしてログインしました。

$ su postgres
Password: (I typed ' postgres ' here)

postgres として、postgres サーバーを起動しました。

postgres@ubuntu:/$ /usr/lib/postgresql/9.1/bin/postgres -D /usr/local/var/postgres
LOG:  database system was shut down at 2013-11-05 17:04:32 PST
LOG:  database system is ready to accept connections 
LOG:  autovacuum launcher started

次に、postgres データベースを使用するための Rails アプリケーションのセットアップを作成しました。

rails new myapp --database=postgresql

データベース構成 YAML ファイルを追加しました。

# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
development:
  adapter: postgresql
  encoding: unicode
  database: postgresql_development
  pool: 5
  username: postgres
  password: postgres

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  encoding: unicode
  database: postgresql_test
  pool: 5
  username: postgres
  password: postgres

production:
  adapter: postgresql
  encoding: unicode
  database: postgresql_production
  pool: 5
  username: postgres
  password: postgres

最後に、私は実行します

rake db:setup

本当に何を期待すべきか本当にわかりません。前述のように、私はこのトピックに少し動揺しています。多くの小さな db.postgres ファイルがアプリケーションの db ディレクトリに表示されますか?

いずれにせよ、巨大なエラー メッセージが表示されますが、その要点は次のとおりです。

Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"postgresql_development", "pool"=>5, "username"=>"postgresql", "password"=>nil}
FATAL:  role "postgresql" does not exist

良いニュースは、データベース サーバーの出力が次のようになることです。

FATAL:  role "postgresql" does not exist
FATAL:  role "postgresql" does not exist
FATAL:  role "postgresql" does not exist

つまり、システム上ですべてが正しく「接続」されており、rake タスクがテスト データベース、実稼働データベース、および展開データベースを作成しようとしています。

悪いニュースは、エラー メッセージがよくわからないことです。

FATAL:  role "postgresql" does not exist 

YAML で指定されたユーザー名が postgresql ではなく postgres であることは確かです。

couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"postgresql_development", "pool"=>5, "username"=>"postgresql", "password"=>nil}

繰り返しますが、ユーザー名 postgresql とパスワードが空白なのはなぜですか? これは私の YAML にあるものではありません!

誰かがこの最後のステップを手伝ってくれたら、とても感謝しています:)

最後の質問です。sqlite3 以外のデータベースはどのように機能するのですか。システム上のどこにあるのですか。Rails を使い始めて、db ディレクトリ内に小さな db.sqlite3 を見たとき、それを完全に理解できました。

ただし、より強力なデータベースでは、データベースはクラスターと呼ばれるものに格納されるようになりましたね。

私が作成するすべてのpostgres railsアプリについて、すべてのデータベースがクラスターに保存されますか?

これは、Ubuntu VPS を購入してそれに postgres をインストールしても同じですか? /usr/local/var/postgresすべてのアプリケーションのすべてのデータベースを含むに配置されたクラスター?

4

1 に答える 1

2

使用している OS やバージョン、PostgreSQL のインストール方法などの詳細を省略することで、この質問への回答を非常に難しくしています。

あなたはUbuntuについて言及したので、aptを介してUbuntuからPostgreSQLパッケージをインストールしたと思います。

その場合、postgres PostgreSQL ユーザー アカウントは既に存在し、pg_hba.conf で UNIX ソケットのピア認証を介してアクセスできるように構成されています。postgres unix ユーザーとしてコマンドを実行することでアクセスできます。

sudo -u postgres createuser the_name

レーキ データベース:作成:すべて

これを行って、Rails サーバーを再起動した後、server_url に戻り、Rails に楽しく乗っていました。

于 2013-11-10T02:49:43.990 に答える