Eu instalei o PostgreSQL no meu Mac OS Lion e estou trabalhando em um aplicativo Rails. Eu uso o RVM para manter tudo separado dos meus outros aplicativos Rails.
Por alguma razão, quando tento migrar o banco de dados pela primeira vez, o rake não consegue encontrar o usuário postgres. Eu entendi o erro
FATAL: role "postgres" does not exist
Eu tenho o pgAdmin, então posso ver claramente que há um usuário postgres no banco de dados - a conta de administrador na verdade - então não tenho certeza do que mais fazer.
Eu li em algum lugar sobre pessoas que estão tendo problemas com o PostgreSQL por causa do caminho em que ele foi instalado, mas acho que não teria chegado tão longe se não conseguisse encontrar o banco de dados.
ruby-on-rails
postgresql
rake
Adão
fonte
fonte
postgres
não foi criado, o que pode levar à mesma mensagem de erro, consulte esta questão relacionada: stackoverflow.com/questions/11919391/…Respostas:
Esta mensagem aparece quando o usuário do banco de dados não existe. Compare o manual aqui .
Vários bancos de dados locais não podem ser a explicação. As funções são válidas em todo o cluster. O manual novamente :
Você deve terminar em outro cluster de banco de dados . Isso seria outro servidor em execução na mesma máquina, ouvindo em uma porta diferente. Ou, mais provavelmente, em uma máquina diferente.
Será que a mensagem vem, de fato, do servidor remoto?
fonte
docker rmi $(docker images -q) --force
. mas o problema estava acontecendo,volumes
eu achoNa verdade, por algum motivo desconhecido, descobri que o problema era porque a função postgresql não havia sido criada.
Tente executar:
Observe que as funções são a forma como o PostgreSQL mantém as permissões do banco de dados . Se não houver função para o usuário postgres, ele não poderá acessar nada. O comando createuser é um wrapper fino em torno dos comandos CREATE USER, CREATE ROLE, etc.
fonte
sudo su - postgres
antes que esse comando funcionasse para mim. Obrigado!-r
opção não é necessária com a-s
opção. O superusuário inclui o atributo "Criar função".Recentemente, tive esse problema imediatamente após instalar o postgres. Se vier imediatamente após a instalação, você pode não ter o usuário padrão, postgres. Nesse caso, você pode criar postgres de usuário padrão usando o comando abaixo.
createuser -s -U $ USER
Ele solicitará que você insira o nome e a senha da função de banco de dados necessária. Depois de concluir o processo, você pode fazer o login no console do postgres usando o comando abaixo
Ex: psql -U postgres
Aqui, é necessário inserir a senha, se houver, ao criar o usuário.
Espero que ajude :)
fonte
Eu estava no OSX 10.8 e tudo o que tentei me deu o
FATAL: role "USER" does not exist
. Como muita gente falou aqui, correcreateuser -s USER
, mas deu o mesmo erro. Isso finalmente funcionou para mim:O
createuser -s --username=postgres
cria um superusuário (sinalizador -s) conectando-se como postgres (--username = sinalizador postgres).Vejo que sua pergunta foi respondida, mas quero adicionar esta resposta para pessoas que usam OSX tentando instalar o PostgreSQL 9.2.4.
fonte
sudo su postgres
.Eu encontrei esse problema logo que instalei pela primeira vez o POSTGRES.app do Heroku. Após uma tentativa e erro matinais, acho que essa linha de código resolveu o problema. Conforme descrito anteriormente, isso ocorre porque o postgresql não tem uma função padrão na primeira vez que é configurado. E precisamos definir isso.
Você deve fazer login no respectivo console psql para usar este comando psql.
Observe também que, se você já criou a função 'postgre', mas ainda obtém erros de permissão, é necessário alterar com o comando:
Espero que ajude!
fonte
Na documentação do Heroku; Começando com os trilhos 4, eles dizem:
Então você apenas deleta aquela linha em "development:", se você não pg informa ao banco de dados que funciona sob a função "myapp"
Lembre-se também de criar o banco de dados para desenvolvimento:
Substitua "myapp" pelo nome do seu aplicativo
fonte
Você poderia ter vários bancos de dados locais? Verifique seu
database.yml
e certifique-se de que está atingindo o pg db desejado. Userails console
para confirmar.fonte
O procedimento de instalação cria uma conta de usuário chamada
postgres
que está associada à função Postgres padrão. Para usar o Postgres, você pode entrar nessa conta. Mas se não for especificado explicitamente, o aplicativo rails procura uma função diferente, mais particularmente a função com seu nome de usuário unix que pode não ter sido criado nas funções do postgres.Para superar isso, você pode criar uma nova função, primeiro alternando para a função padrão postgres que foi criada durante a instalação
sudo -i -u postgres
Depois de fazer login na conta do postgres, você pode criar um novo usuário pelo comando:
createuser --interactive
Isso solicitará algumas opções e, com base em suas respostas, executará os comandos corretos do Postgres para criar um usuário.
Passe um nome de função e algumas permissões e a função é criada, você pode então migrar seu banco de dados
fonte
Minha resposta foi muito mais simples. Apenas fui para a pasta db e excluí a coluna id, que tentei criar à força, mas que na verdade é criada de forma automática. Eu também apaguei o USERNAME no arquivo database.yml (na pasta config).
fonte
No prompt de comando do usuário local do Ubuntu, mas não no usuário root, digite
sudo -u postgres createuser nome de usuário
O nome de usuário acima deve corresponder ao nome indicado na mensagem "FATAL: função 'nome de usuário' não existe."
Digite a senha para o nome de usuário.
Em seguida, digite novamente o comando que gerou a mensagem função não existe.
fonte
Acabei aqui depois de tentar seguir o tutorial de Ryan Bate sobre como implantar no AWS EC2 com borracha. Aqui está o que aconteceu para mim: criamos um novo aplicativo usando "
rails new blog -d postgresql
Obviamente, isso cria um novo aplicativo com pg como banco de dados, mas o banco de dados ainda não foi feito. Com o sqlite, você apenas executa rake db: migrate, porém com o pg você precisa criar o banco de dados pg primeiro. Ryan não fez esta etapa. O comando é
rake db:create:all
, então podemos executarrake db:migrate
A segunda parte é alterar o arquivo database.yml. O padrão para o nome de usuário quando o arquivo é gerado é 'appname'. No entanto, é provável que sua função como administrador do postgresql seja diferente (pelo menos era para mim). Mudei para o meu nome (veja os conselhos acima sobre como criar um nome de função) e estava pronto para prosseguir.
Espero que isto ajude.
fonte
Depois de um monte de instalação e desinstalação do Postgres, aqui está o que agora parece funcionar de forma consistente para mim com Os X Mavericks, Rails 4 e Ruby 2.
No arquivo database.yml, eu mudo os nomes de usuário padrão para o nome de usuário do meu computador, que para mim é apenas "admin".
Na linha de comando, executo rake db: create: all
Então eu executo rake db: migrate
Quando eu executo o servidor Rails e verifico o host local, ele diz "Bem-vindo a bordo".
fonte
Você pode ser capaz de contornar isso executando-o
initdb -U postgres -D /path/to/data
ou executando-o como usuário postgres, uma vez que o padrão é o usuário atual. GL!fonte