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

Postgresql:FATAL:a função não existe


Eu encontrei problemas semelhantes ao configurar um novo aplicativo Rails com Postgresql. Recebi as seguintes mensagens de erro abaixo
FATAL:  role "promisepreston" does not exist
Couldn't create 'MyBlog_development' database. Please check your configuration.
rails aborted!
ActiveRecord::NoDatabaseError: FATAL:  role 

Caused by:
PG::ConnectionBad: FATAL:  role "promisepreston" does not exist

Para resolver isso basta seguir a solução abaixo

Primeiro, precisamos fazer login na conta de usuário postgres por meio da interface de linha de comando;
sudo su - postgres

Em seguida, conecte-se ao servidor de banco de dados usando o cliente psql, como a função postgres:
psql -U postgres

Bem-vindo ao psql 10.6, o terminal interativo do PostgreSQL.
[email protected]:~$ psql -U postgres
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help

postgres=#

Em seguida, conectado ao cliente psql, criaremos uma função com nosso nome da função desejado que tem o atributo LOGIN e nossa senha desejada , e que pode criar bancos de dados e gerenciar funções (N/B: Por favor, não digite este postgres=# , já que é um espaço reservado):
postgres=# create role rolename with createdb login password 'password1';

Observe o ponto e vírgula à direita (; ) necessário no final da instrução SQL. As aspas simples ( ‘ ‘ ) não fazem parte da senha, mas devem incluí-la.

Funcionou? Você pode verificar usando o comando \du (N/B: Por favor, não digite este postgres=# , já que é um espaço reservado):
postgres=# \du

Agora você pode executar o comando para criar o banco de dados para sua aplicação Rails;
rails db:create

E então execute também o comando para migrar o banco de dados para sua aplicação Rails;
rails db:migrate

Isso é tudo.

Espero que isso ajude