sql >> データベース >  >> RDS >> PostgreSQL

致命的:役割ルートは存在しません

    明示的な(myを使用してPostgresサーバーに接続できます つまり、OSユーザー名)または暗黙的(timonin つまり、database.ymlでの役割 )ログイン。

    私が見るようにあなたのdatabase.yml ユーザー名ステートメントがありますが、本番用のみ 環境。 Rails環境を指定せずにrakeテストを実行すると、開発に対してそれらが実行されます。 デフォルトでは環境。そのため、FATAL: role "my" does not existのようなエラーが発生します 。

    したがって、ニーズに応じて、これらのステートメントをすべてのデータベースの定義に追加する必要があります(test およびdevelopment 同様に):

      username: timonin
      password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
    

    その後、Railsアプリケーションはtimoninとして接続します ユーザー。

    完全なチェックリストは次のとおりです。

    • 役割を作成する

    SQLforPostgreSQLは次のとおりです。

    CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
      NOINHERIT CREATEDB
       VALID UNTIL 'infinity';
    COMMENT ON ROLE timonin
      IS 'Timonin database role for Rails app';
    
    • コメントのコメントを外すかステートメントを追加する username: timonin およびpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> database.ymlファイルに
    • 実行 TIMONIN_DATABASE_PASSWORDを使用したすべての操作 変数:

    変更されたrakeコマンドは次のとおりです。

    rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
    

    または:

    rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
    

    テスト環境用。



    1. mysqlにシーケンシャルデータを保存する方法

    2. CakephpのUNION構文

    3. SequenceGeneratorを使用したjavax.persistence.EntityExistsException

    4. java.lang.IllegalArgumentExceptionが発生するのはなぜですか。この場合、インデックス1のバインド値はnullです。