PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

FATAL:a raiz da função não existe


Você pode se conectar ao servidor Postgres com explícito (my ou seja, nome de usuário do SO) ou implícito (timonin ou seja, função em database.yml ) Conecte-se.

Como vejo seu database.yml tem uma declaração de nome de usuário, mas apenas para produção meio Ambiente. Executar testes de rake sem especificar o ambiente Rails irá executá-los no desenvolvimento ambiente por padrão. É por isso que você tem um erro como FATAL: role "my" does not exist .

Portanto, dependendo de suas necessidades, você deve adicionar essas declarações às definições de todos os bancos de dados (test e development também):
  username: timonin
  password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>

Depois disso, seu aplicativo Rails se conectará como timonin do utilizador.

A lista de verificação completa é a seguinte:
  • Criar função

Aqui está o SQL para PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Remova ou adicione declarações username: timonin e password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> para seu arquivo database.yml
  • Executar todas as operações com TIMONIN_DATABASE_PASSWORD variável:

Aqui está o comando rake alterado:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

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

para ambiente de teste.