1

Rails アプリの postgres データベースを削除するのに問題があります。heroku にデプロイした後、最近 sqlite から切り替えました。rake タスクを実行してデータを集約し、データベースに入力すると、rake db:create db:migrate はすべて機能しますが、db:drop は機能しません。rake db:drop db:migrate db:create all を実行した後、端末に次のエラーが表示されます。「all」は、アグリゲータのレーキ タスクです。

Couldn't drop something_development : #<PG::Error: FATAL:  database "postgres" does not exist
>
Couldn't drop something_test : #<PG::Error: could not connect to server: No such file or directory
    Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
>
something_development already exists
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?    

「これは、私の database.yml ファイルの外観です...」

development:
  adapter: postgresql
  host: localhost
  database: something_development

  username: username


test:
  adapter: postgresql
  database: something_test
 pool: 5
 timeout: 5000

production:
 adapter: postgresql
 host: localhost
 username: username
 database: something_production

また、psql コマンド ラインからのデータベースのリストは次のとおりです。

                                         List of databases
         Name         |      Owner      | Encoding | Collate | Ctype |          Access privileges          
----------------------+-----------------+----------+---------+-------+-------------------------------------
username              | username        | UTF8     | en_US   | en_US | 
something_development | username        | UTF8     | en_US   | en_US | 
template0             | username        | UTF8     | en_US   | en_US | =c/username+          |                 |          |         |       | username=CTc/username
template1             | username        | UTF8     | en_US   | en_US | =c/username    +      |                 |          |         |       | username=CTc/username
(4 rows)

編集 - Heroku にプッシュする前に、開発中にこれを実行しようとしています。ユーザー名にアクセス権限を追加する必要がありますか? GRANT UPDATE ON something_development TO username を試みましたが、エラーを受け取りました: 関係 "something_development" が存在しません。Heroku のためにそれを覚えておきます - ありがとう。

何が起こっているのか、または私を正しい方向に向ける可能性のあるリソースについて何かアイデアを持っている人はいますか? 助けていただければ幸いです - ありがとう。

4

3 に答える 3

1

最初に、Heroku で使用している postgres DB の種類 (共有 DB または Heroku Postgres) を確認する必要があります。

共有 DB を使用している場合 (これ以上使用しないことをお勧めします)、残念ながら Heroku アプリを削除し、同じアプリ名で新しいアプリを再作成する必要があります。

Heroku PG を使用している場合は、https ://postgres.heroku.com/databasesで DB を見つけることができます。別の DB を破棄して追加するだけです。DB を削除して再作成するのと同じです。その後、次のように移行を実行できます。良い。Heroku PG では、db:drop を実行できるかどうかわかりません (Heroku でこのコマンドを使用できなかったのは久しぶりです)。

構成については、以下のいくつかの手順に従う必要があります。

gem pg をインストールする

pgAdmin III などを使用して、PG サーバーへの接続を試みます。成功した場合は、この情報を database.yml ファイルに使用してください。

注意: コードを Heroku にプッシュすると、Heroku は PG サーバー情報に基づいて新しい database.yml を自動的に作成するため、Heroku の構成データベースを気にする必要はありません。アプリを Heroku にプッシュする前に、sqlite gem を削除することを忘れないでください

于 2012-12-06T04:02:43.803 に答える
0

heroku では、データベースをドロップする権限がないため、実行する必要があります

heroku pg:reset

データベースが heroku 上にない場合は、(postrgesql の) ユーザーに権限があることを確認してください。

于 2012-12-06T03:09:10.340 に答える