Estou usando o aplicativo PostgreSql para mac ( http://postgresapp.com/ ). Eu usei no passado em outras máquinas, mas está me causando alguns problemas ao instalar no meu macbook. Instalei o aplicativo e executei:
psql -h localhost
Retorna:
psql: FATAL: database "<user>" does not exist
Parece que nem consigo executar o console para criar o banco de dados que ele está tentando encontrar. O mesmo acontece quando eu apenas corro:
psql
ou se eu iniciar o psql no menu suspenso do aplicativo:
Estatísticas da máquina:
OSX 10.8.4
psql (PostgreSQL) 9.2.4
Qualquer ajuda é apreciada.
Também tentei instalar o PostgreSql via homebrew e estou tendo o mesmo problema. Também li a página de documentação dos aplicativos que afirma:
Quando o Postgres.app é iniciado pela primeira vez, ele cria o banco de dados $ USER, que é o banco de dados padrão do psql quando nenhum é especificado. O usuário padrão é $ USER, sem senha.
Parece que o aplicativo não está criando $ USER, no entanto eu instalei -> desinstalei - reinstalei várias vezes agora, portanto deve ser algo com minha máquina.
Encontrei a resposta, mas não sei exatamente como ele funciona, pois o usuário que respondeu neste tópico -> Como executar o Postgresql no Mac: O banco de dados "postgres" não existe não seguiu. Eu usei o seguinte comando para abrir o psql:
psql -d template1
Deixarei este sem resposta até que alguém possa fornecer uma explicação para o porquê disso funcionar.
fonte
psql -d postgres -U postgres -h localhost
mostra? Sem sinalizadores, o padrão é o usuário da CLI, e eu diria que o padrão é o db admin "postgres", mas não tenho um mac para testar.createdb <user>
funcionou para mim.psql -U user -d postgres
, pois isso garante que o usuário esteja conectado ao banco de dados do postgres, que já está presente. Portanto, precisamos passar o banco de dados também durante o login.Respostas:
Parece que seu gerenciador de pacotes falhou ao criar o banco de dados chamado $ user para você. A razão que
funciona para você é que o template1 é um banco de dados criado pelo próprio postgres e está presente em todas as instalações. Aparentemente, você pode fazer login no template1, portanto, você deve ter alguns direitos atribuídos a você pelo banco de dados. Tente isso em um prompt de shell:
e veja se você pode fazer login novamente com
Isso simplesmente criará um banco de dados para seu usuário de login, que eu acho que é o que você está procurando. Se createdb falhar, você não terá direitos suficientes para criar seu próprio banco de dados e precisará descobrir como corrigir o pacote homebrew.
fonte
$ createdb -h localhost
para resolver o errocould not connect to database postgres: could not connect to server
. Depois disso, posso me conectar ao console do postgresql viapsql -h localhost
.-d template1
no seu primeiro comando? Eu já vi "template1" em tutoriais por toda a Internet, mas serve apenas para me confundir. Uma abordagem mais lógica seria, na minha opinião 1) Criar o usuário do PostgreSQL, por exemplo, "usera" 2) Criar um banco de dados com o mesmo nome que o usuário "usera" (acho que isso é loucura, mas parece que o PostgreSQL exige) 3) log em PostgreSQL como o super usuário "postgres" e atribuir os privilégios de banco de dados "usera" para o usuário "usera" (oh meu deus, isso é realmente a vida real?)No terminal, basta executar o comando na janela do prompt de comando. (Não está dentro do psql) .
E tente executar o postgres novamente.
fonte
createdb
Por padrão, o postgres tenta se conectar a um banco de dados com o mesmo nome que seu usuário. Para evitar esse comportamento padrão, basta especificar usuário e banco de dados:
fonte
psql -U Username -f create_db.sql
isso retornará um erro:database Username doesn't exists
psql -U Username postgres
quando você ainda não possui bancos de dadossudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
no prompt de comando.psql (x.x.x) Type "help" for help.
fonte
Efetue login usando o banco de dados template1 padrão:
Crie um banco de dados com seu userId:
Saia e entre novamente
fonte
Eu enfrentei o mesmo erro ao tentar abrir o postgresql no mac
Eu encontrei este comando simples para resolvê-lo:
Método 1
e tipo
Método 2:
fonte
Teve o mesmo problema, foi simples
psql -d postgres
(digite o comando no terminal)fonte
Este erro também pode ocorrer se a variável de ambiente PGDATABASE estiver definida como o nome de um banco de dados que não existe.
No OSX, vi o seguinte erro ao tentar iniciar o psql no menu Postgress.app:
psql: FATAL: database "otherdb" does not exist
A solução para o erro foi remover
export PGDATABASE=otherdb
de~/.bash_profile
:Além disso, se PGUSER estiver definido como algo diferente do seu nome de usuário, ocorrerá o seguinte erro:
psql: FATAL: role "note" does not exist
A solução é remover
export PGUSER=notme
de~/.bash_profile
.fonte
Após a instalação do postgres, na minha versão do caso é 12.2, executei o comando abaixo
createdb
.fonte
Como essa pergunta é a primeira nos resultados da pesquisa, colocarei aqui uma solução diferente para um problema diferente, para não ter um título duplicado.
A mesma mensagem de erro pode aparecer ao executar um arquivo de consulta
psql
sem especificar um banco de dados. Como não há nenhumause
instrução no postgresql, precisamos especificar o banco de dados na linha de comando, por exemplo:fonte
Como a documentação createdb afirma:
Portanto, se certas distribuições do OS / postgresql fazem isso de maneira diferente, certamente não é o padrão / padrão (apenas verifiquei que
initdb
no openSUSE 13.1 cria o banco de dados "postgres", mas não "<usuário>"). Para encurtar a história,psql -d postgres
espera-se que seja usado ao usar um usuário que não seja "postgres".Obviamente, a resposta aceita, executando
createdb
para criar um banco de dados nomeado como o usuário, também funciona, mas cria um banco de dados supérfluo.fonte
teve o problema de usar o driver JDBC, portanto, basta adicionar o banco de dados (talvez de forma redundante, dependendo da ferramenta que você pode usar) após o nome do host na URL, por exemplo
jdbc:postgres://<host(:port)>/<db-name>
detalhes adicionais estão documentados aqui: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT
fonte
Conecte-se ao postgres via superusuário existente.
Crie um banco de dados com o nome do usuário ao qual você está se conectando ao postgres.
Agora tente se conectar via nome de usuário
fonte
Tente usar-
psql -d postgres
Eu também estava enfrentando o mesmo problema quando corri
psql
fonte
Primeiro, é útil criar um banco de dados com o mesmo uso atual, para evitar o erro quando você deseja apenas usar o banco de dados padrão e criar novas tabelas sem declarar explicitamente o nome de um banco de dados.
Substitua "skynotify" pelo seu nome de usuário:
-d declara explicitamente qual banco de dados usar como padrão para instruções SQL que não incluem explicitamente um nome de banco de dados durante esta sessão interativa.
BÁSICO PARA OBTER UMA IMAGEM CLARA DO QUE SEU SERVIDOR PostgresQL possui.
Você deve se conectar a um banco de dados existente para usar o psql interativamente. Felizmente, você pode solicitar ao psql uma lista de bancos de dados:
.
Isso NÃO inicia o console interativo, apenas envia uma tabela baseada em texto para o terminal.
Como outras respostas dizem, o postgres é sempre criado, portanto você deve usá-lo como seu banco de dados à prova de falhas quando quiser que o console comece a funcionar em outros bancos de dados. Se não estiver lá, liste os bancos de dados e use qualquer um deles.
De maneira semelhante, selecione tabelas de um banco de dados:
Meu banco de dados "postgres" não possui tabelas, mas qualquer banco de dados que faça isso produzirá uma tabela baseada em texto no terminal (saída padrão).
E, para completar, também podemos selecionar todas as linhas de uma tabela:
.
Mesmo se houver zero linhas retornadas, você obterá os nomes dos campos.
Se suas tabelas tiverem mais de uma dúzia de linhas, ou você não tiver certeza, será mais útil começar com uma contagem de linhas para entender a quantidade de dados em seu banco de dados:
.
E não que "1 linha" o confunda, ele representa apenas quantas linhas são retornadas pela consulta, mas a 1 linha contém a contagem desejada, que é 0 neste exemplo.
NOTA: um banco de dados criado sem um proprietário definido será de propriedade do usuário atual.
fonte
Tentei algumas dessas soluções, mas elas não funcionaram muito bem (apesar de estarem no caminho certo!)
No final, meu erro foi:
quando executei o seguinte comando:
psql
Então, eu executei esses dois comandos:
NOTA: esta irá remover o db, mas eu não precisar dele e por algum motivo eu não podia mais acesso pqsl, então eu removido e recriado-lo. Então
psql
trabalhou novamente.fonte
Não tenho certeza se já foi adicionado nas respostas, a resposta de Anatolii Stepaniuk foi muito útil, que é a seguinte.
fonte
Teve este problema ao instalar o postgresql via homebrew.
Teve que criar o superusuário "postgres" padrão com:
fonte
Eu ainda tinha o problema acima depois de instalar o postgresql usando o homebrew - resolvi colocando / usr / local / bin no meu caminho antes de / usr / bin
fonte
Na sua explicação mais simples; é problema noob. Apenas digitando
resultará nessa resposta.
terá sucesso sem erro se o usuário tiver permissões para acessar o banco de dados.
Pode-se entrar nos detalhes das variáveis de ambiente exportadas, mas isso é desnecessário. Isso é básico demais para falhar por qualquer outro motivo.
fonte
pgres