Não estou conseguindo usar o comando sudo -u postgres psql ou o psql -U postgres. Como posso ativar o psql para criar o banco de dados?
Não estou conseguindo usar o comando sudo -u postgres psql ou o psql -U postgres. Como posso ativar o psql para criar o banco de dados?
Olá Roberth! Tudo bem?
Parece que você está enfrentando dificuldades para acessar o shell do PostgreSQL usando os comandos sudo -u postgres psql ou psql -U postgres. Vamos tentar resolver isso juntos!
Aqui estão algumas sugestões que podem te ajudar:
Verifique se o PostgreSQL está instalado e em execução: Certifique-se de que o PostgreSQL está instalado no seu sistema e que o serviço está ativo. Você pode verificar o status do serviço com o comando:
sudo service postgresql status
Se não estiver em execução, você pode iniciá-lo com:
sudo service postgresql start
Usuário e permissões: O comando sudo -u postgres psql é usado para acessar o shell do PostgreSQL como o usuário postgres. Se estiver tendo problemas, certifique-se de que você tem permissões de sudo no seu sistema.
Senha do usuário postgres: Se você estiver usando o comando psql -U postgres, ele pode estar solicitando uma senha. Certifique-se de que você sabe a senha correta do usuário postgres. Caso contrário, você pode redefinir a senha usando o seguinte comando:
sudo -u postgres psql
E, em seguida, no shell do PostgreSQL:
ALTER USER postgres WITH PASSWORD 'nova_senha';
Verifique o caminho do psql: Às vezes, o caminho do executável psql pode não estar no seu PATH. Você pode tentar acessar o psql usando o caminho completo, como /usr/bin/psql.
Erros específicos: Se houver mensagens de erro específicas ao tentar executar os comandos, compartilhe-as, pois elas podem fornecer pistas adicionais sobre o que pode estar errado.
Espero ter ajudado e bons estudos!
Aparece a seguinte mensagem no terminal:
input: sudo service postgresql status
output: Comando não encontrado
O meu SO é o Windows, os comando do instrutror são para o Linux? Seria esse o problema?
Baixar o PostegreSQL para desktop, deixar ele aberto.
Abrir o prompt de comando windows e entrar com o comando:cd "C:\Program Files\PostgreSQL\<versão>\bin"
Atenção ao número da versão do PostgreSQL baixado, e substituir o número no código acima.
Após chegar ao endereço acima, entrar com o comando:psql -U postgres
Agora é seguir com as instruções do curso:
Agora estou com problemas ao rodar o uvicorn, com o erro:
\__init__.py", line 135, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 78: invalid continuation byte
Tentei o client_encoding='utf8' no database.py:
engine = create_engine(DATABASE_URL, client_encoding='utf8')
Achei que fosse só um erro de decode, mas tô completamente perdido e nem o docs do FastAPI consigo verificar.
Oi, Roberth!
O erro de UnicodeDecodeError acontece quando a string de conexão com o PostgreSQL contém caracteres especiais (como ç, acentos ou espaços) e o driver não consegue decodificar corretamente no Windows.
Resolva fazendo o seguinte, de forma direta:
Abra o arquivo onde está a variável DATABASE_URL (normalmente database.py ou .env).
Evite qualquer caractere especial na senha do banco.
Use apenas letras e números temporariamente.
Exemplo correto de string de conexão:
DATABASE_URL = "postgresql+psycopg2://postgres:senha123@localhost:5432/nome_do_banco"
Remova completamente o parâmetro client_encoding, ele não resolve esse erro no Windows com psycopg2.
Certifique-se de que o arquivo está salvo em UTF-8:
Reinicie o terminal e rode novamente o Uvicorn:
uvicorn main:app --reload
Pontos importantes:
Fico à disposição.
A codificação UTF-8 já estava configurada. Não tinha nehum caractere especial na URL, mesmo deixando do jeito que informou. Consegui corrigir somente quando instalei o pg8000.
Agora estou com erro:
psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: autenticação do tipo senha falhou para o usuário "postgres"
*coloquei o mesmo usuário e senha que o instrutor.
user: postgres | password: postgres
Fala, Roberth!
O erro FATAL: autenticação do tipo senha falhou para o usuário "postgres" acontece quando a senha configurada no PostgreSQL não é a mesma que você está usando na conexão. No Windows, isso é comum porque a senha do usuário postgres é definida no momento da instalação, e não vem como postgres por padrão.
Resolva fazendo o seguinte, de forma direta:
Altere a senha do usuário postgres no próprio PostgreSQL
Abra o prompt de comando do Windows como administrador, navegue até a pasta bin do PostgreSQL e acesse o banco:
cd "C:\Program Files\PostgreSQL\15\bin"
psql -U postgres
Digite a senha que você definiu na instalação.
Redefina a senha do usuário postgres
No terminal do psql, execute:
ALTER USER postgres WITH PASSWORD 'postgres';
Isso garante que o usuário postgres tenha realmente a senha postgres.
Ajuste a string de conexão da API
No seu projeto, deixe a URL exatamente assim:
DATABASE_URL = "postgresql+pg8000://postgres:postgres@localhost:5432/nome_do_banco"
Pontos importantes:
Fico à disposição.