Rails 4.2.6を使用してアプリを開発しようとしています。データベース用にpostgresを使用しようとしています。サーバーは正常に起動しますが、ページをロードしようとすると、 ActiveRecord :: Baseのプール」エラー。
どうなり得るか?
編集
Pg gemは適切に機能していませんでした。サーバーを起動する前にコメントし、その後GemFileからコメント解除する必要がありました。私はRuby 2.0の代わりにRuby 2.0(意図したとおり)を使用していることに気付きました。私はRuby 2.3を削除し、 Ruby 2.0環境ですべてを起動します。現在は正常に動作しています。
新しいRails=リリースでは、gemをインストールする代わりに 'gem install pg --pre'を使用する必要があるという、gemに問題があることをどこかで読んでいました。 、しかしその後、私のアプリは私のGemFileに 'pg' gemを必要としていたので、上記の問題が再び現れました。
これは私のdatabase.ymlファイルがどのように終わったかです:
default: &default
adapter: postgresql
encoding: unicode
Host: localhost
username: -------
password: -------
pool: 5
development:
<<: *default
database: myDbName
Rakeタスクからこのエラーが発生している場合は、:environment
タスクの前のタスク。
変化:
task :task_name do
end
に:
task task_name: :environment do
end
問題を修正する必要があります。
この問題は、サーバーがデータのプル元となる対応するデータベースを見つけることができない場合に発生します。
私は最後から同じ問題を抱えていました。Sqlite3のバージョンを更新しましたが、現在のPumaサーバーのバージョンがサポートしているバージョンよりも高いバージョンでした。
単にSqlite3バージョンをアンインストールしてから、Puma Serverの現在のバージョンでサポートされているバージョンをインストールする必要がありました。
gem uninstall sqlite3
これにより、更新されたバージョンのSqlite3がアンインストールされ、現在のサーバーでサポートされているバージョンを示す以下のコードを実行します。
gem install sqlite3
または、Gemfileを開いて、使用しているデータベースのバージョンを含めることもできます
gem 'sqlite3', '~> 1.3.6'
N/B: sqlite3バージョンは、この回答を書いている時点での最新バージョンです
そして、実行します
bundle update
指定したデータベースのバージョンをインストールします。
それで全部です。
これが役立つことを願っています。
database.yml
すべての設定に問題がない場合。初めてデータベースを作成していない場合、このコマンドを使用してデータベースを作成します
rake db:create
データベースが既に存在する場合は、dbの移行をリセットしてください。
rake db:migrate:reset
それが問題を解決することを願っています。 Rails consoleに移動して、動作するかどうかを確認してください。
PostgreSQLの場合、database.yml
ファイルは次のようになります。
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
development:
<<: *default
database: your_db_name
また、gemがインストールされていることを確認してください:Gemfileで:
gem 'pg'
最後に、サーバーを再起動します。
役立つことを願っています
編集:私はほとんど忘れていました。PostgresSQLが実行されていることを確認し、ダウンロードとセットアップについて このリンク を確認してください。
実行中の場合Rails db:migrate
データベース行の移行ファイルに従って作成されます。詳細についてはスキーマをご覧ください。
Rails 5
新しいアプリ
テストと開発の両方にPostgresqlを使用する
仕様が実行されるため、RailsはPostgresqlに接続できます
しかし、Webアプリを起動すると、「プライマリIDの接続プールが見つかりません」というメッセージが表示されました。
「bin/Rails db:migrate:reset」を実行し、アプリを再起動しました。動いた。理由はわかりません。
database.yml:
development:
adapter: postgresql
encoding: unicode
database: Rails5_development
pool: 5
username: foo
password: bar
Host: localhost
port: 5432
test:
adapter: postgresql
encoding: unicode
database: Rails5_test
pool: 5
username: foo
password: bar
Host: localhost
port: 5432
警告が消えるには、サーバーを再起動する必要がありました。
データベースを作成する前にモデルにアクセスしようとすると、同じ問題が発生しました。
rake db:migrate
を少なくとも1回実行してください。
すでに移行を実行している場合は、前の回答で述べたようにデータベースを確認してください。