Mac OS LionにPostgreSQLをインストールし、Railsアプリで作業しています。 RVMを使用して、他のRailsアプリからすべてを分離します。
何らかの理由で、rakeが初めてdbを移行しようとすると、postgresユーザーが見つかりません。エラーが出ます
FATAL: role "postgres" does not exist
私はpgAdminを持っているので、DBにpostgresユーザー(実際にはadminアカウント)があることがはっきりとわかるので、他に何をすべきかわかりません。
PostgreSQLのインストール先のパスが原因でPostgreSQLに問題がある人についてどこかで読んでいますが、dbが見つからなければそこまで到達できなかったと思います。
実際、何らかの理由で、postgresqlロールが作成されていなかったために問題が発生したことがわかりました。
実行してみてください:
createuser -s -r postgres
ロールはPostgreSQL データベースのパーミッションを維持する であることに注意してください。 postgresユーザーのロールがない場合、何にもアクセスできません。 createuserコマンドは、CREATE USER、CREATE ROLEなどのコマンドを囲む薄い ラッパー です。
最近、postgresをインストールした直後にこの問題が発生しました。インストール直後に表示される場合、デフォルトのユーザーpostgresが欠落している可能性があります。その場合、以下のコマンドを使用してデフォルトのユーザーpostgresを作成できます。
createuser -s -U $ USER
Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user:
必要なデータベースロール名とパスワードを入力するよう求められます。プロセスを完了すると、以下のコマンドを使用してpostgresコンソールにログインできます。
psql -U 'your_database_name'
例:psql -U postgres
ここで、ユーザーの作成中にパスワードを入力した場合は、パスワードを入力する必要があります。
それが役に立てば幸い :)
私はOSX 10.8を使用していましたが、試してみたすべてがFATAL: role "USER" does not exist
をくれました。多くの人がここで言ったように、createuser -s USER
を実行しますが、同じエラーが発生しました。これは最終的に私のために働いた:
$ Sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME
createuser -s --username=postgres
は、postgres(--username = postgresフラグ)として接続することにより、スーパーユーザー(-sフラグ)を作成します。
あなたの質問には答えられたようですが、PostgreSQL 9.2.4をインストールしようとするOSXを使用している人々のために、この答えを追加したいと思います。
この問題は、HerokuのPOSTGRES.appを初めてインストールしたときに発生しました。ある朝の試行錯誤の後、この1行のコードで問題が解決したと思います。前に説明したように、これはpostgresqlが最初にセットアップされたときにデフォルトの役割を持っていないためです。そして、それを設定する必要があります。
sovanlandy=# CREATE ROLE postgres LOGIN;
このpsqlコマンドを使用するには、それぞれのpsqlコンソールにログインする必要があります。
また、ロール「postgre」をすでに作成しているにもかかわらず、許可エラーが発生する場合は、コマンドで変更する必要があることにも注意してください。
sovanlandy=# ALTER ROLE postgres LOGIN;
それが役に立てば幸い!
Herokuのドキュメント。はじめにRails 4、彼らは言う:
また、database.ymlのユーザー名フィールドがある場合は削除する必要があります:config/database.ymlファイルでremove:ユーザー名:myapp
次に、ロール「myapp」の下で機能するデータベースにpgが伝えない場合、「development:」の行を削除します。
この行は、Railsに、データベースmyapp_developmentをmyappのロールで実行する必要があることを伝えます。データベースにこの役割がない可能性が高いため、削除します。 remove Railsという行を使用すると、現在コンピューターにログインしているユーザーとしてデータベースにアクセスしようとします。
開発用のデータベースを作成することも忘れないでください。
$createdb myapp_development
アプリ名に「myapp」を追加
複数のローカルデータベースがありますか? database.yml
を確認し、目的のpg dbにアクセスしていることを確認してください。 Rails console
を使用して確認します。
Ubuntuローカルユーザーコマンドプロンプトで、rootユーザーではなく、入力します
Sudo -u postgres createuserユーザー名
上記のユーザー名は、メッセージ「FATAL:role 'username' does not exist。」に示されている名前と一致する必要があります。
ユーザー名のパスワードを入力します。
次に、役割が存在しないというメッセージを生成したコマンドを再入力します。
私の答えはもっと簡単でした。 dbフォルダーに移動して、id列を削除しました。これは、強制的に作成しようとしましたが、実際には自動的に作成されます。 database.ymlファイル(configフォルダーの下)のUSERNAMEも削除しました。
この問題を回避するには、initdb -U postgres -D /path/to/data
を実行するか、ユーザーpostgresとして実行します。デフォルトは現在のユーザーです。 GL!
ラバーを使用してAWS EC2にデプロイするRyan Bateのチュートリアルに従うことを試みた後、私はここで終わりました。私に起こったことは次のとおりです。「
Rails new blog -d postgresql
これにより、データベースとしてpgを持つ新しいアプリが作成されますが、データベースはまだ作成されていません。 sqliteでは、rake db:migrateを実行するだけですが、pgでは、最初にpgデータベースを作成する必要があります。ライアンはこのステップを実行しませんでした。コマンドはrake db:create:all
で、rake db:migrate
を実行できます
2番目の部分は、database.ymlファイルの変更です。ファイルが生成されるときのユーザー名のデフォルトは「appname」です。ただし、postgresql adminの役割が異なる可能性があります(少なくとも私にとっては)。私はそれを自分の名前に変更し(上記のロール名の作成に関するアドバイスを参照)、行って良かったです。
お役に立てれば。
多数のPostgresのインストールとアンインストールの後、Os X Mavericks、Rails 4およびRuby 2で一貫して動作するようになりました。
Database.ymlファイルで、デフォルトのユーザー名をコンピューターのユーザー名に変更します。このユーザー名は「admin」です。
コマンドラインでrake db:create:allを実行します
次に、rake db:migrateを実行します
Railsサーバーを実行してローカルホストを確認すると、「ようこそ」と表示されます。