programing

psql: FATAL: 데이터베이스 " "가 존재하지 않습니다.

oldcodes 2023. 5. 24. 22:22
반응형

psql: FATAL: 데이터베이스 " "가 존재하지 않습니다.

저는 Mac용 PostgreSql 앱(http://postgresapp.com/) 을 사용하고 있습니다.예전에 다른 기계에서 사용한 적이 있는데, 맥북에 설치할 때 문제가 생겼습니다.애플리케이션을 설치하고 실행했습니다.

psql -h localhost

반환되는 항목:

psql: FATAL:  database "<user>" does not exist

찾으려는 데이터베이스를 만들기 위해 콘솔을 실행할 수도 없는 것 같습니다.제가 그냥 뛰어도 똑같은 일이 일어납니다.

psql 

또는 애플리케이션 드롭다운 메뉴에서 psql을 실행하는 경우:

컴퓨터 통계:

  • OSX 10.8.4

  • psql(Postgre)SQL) 9.2.4

어떤 도움이든 감사합니다.

저도 홈브루를 통해 PostgreSql을 설치하려고 시도했지만 같은 문제가 발생하고 있습니다.다음과 같은 애플리케이션 설명서 페이지도 읽었습니다.

Postgres.app이 처음 시작될 때 $USER 데이터베이스를 생성합니다. 이 데이터베이스는 psql의 기본 데이터베이스로 지정되지 않은 경우에 사용됩니다.기본 사용자는 암호가 없는 $USER입니다.

그래서 애플리케이션이 $USER를 생성하지 않는 것처럼 보이지만, 제가 설치한 ->는 지금 여러 번 제거되었으므로 제 컴퓨터에 문제가 있는 것이 틀림없습니다.

나는 답을 찾았지만 이 스레드에서 답을 한 사용자와 정확히 어떻게 작동하는지 확신할 수 없습니다. -> Mac에서 Postgresql 실행하기: 데이터베이스 "postgres"가 존재하지 않습니다.다음 명령을 사용하여 psql을 열었습니다.

psql -d template1

누군가가 이것이 작동하는 이유를 설명할 수 있을 때까지 이 문제에 대해 답변하지 않겠습니다.

패키지 관리자가 $user라는 데이터베이스를 생성하지 못한 것 같습니다.그 이유는

psql -d template1

template1은 postgres 자체에 의해 생성된 데이터베이스이며 모든 설치에 존재합니다.template1에 로그인할 수 있으므로 데이터베이스에서 일부 권한을 할당해야 합니다.셸 프롬프트에서 이 작업을 수행합니다.

createdb

그런 다음 다시 로그인할 수 있는지 확인합니다.

psql -h localhost

이렇게 하면 로그인 사용자를 위한 데이터베이스를 만들 수 있습니다. 이것이 바로 당신이 찾고 있는 것이라고 생각합니다.만약 createdb가 실패한다면, 당신은 당신만의 데이터베이스를 만들 충분한 권한이 없고, 당신은 홈브루 패키지를 고치는 방법을 찾아야 할 것입니다.

터미널에서 명령 프롬프트 창에서 명령을 실행하기만 하면 됩니다.(psql 내부가 아님).

createdb <user>

그리고 나서 다시 우편물을 실행해 보세요.

기본적으로, postgres는 사용자와 동일한 이름의 데이터베이스에 연결을 시도합니다.이 기본 동작을 방지하려면 사용자 및 데이터베이스를 지정하십시오.

psql -U Username DatabaseName 
  1. 사용자로 합니다.sudo -i -u postgres
  2. 사용자 : 새사자만들기:createuser --interactive
  3. 역할 이름을 묻는 메시지가 나타나면 Linux 사용자 이름을 입력하고 Yes(예)를 선택하여 superuser 질문을 표시합니다.
  4. 여전히 postgres 사용자로 로그인한 상태에서 데이터베이스를 생성합니다. createdb <username_from_step_3>
  5. 다음을합니다.psql명령 프롬프트에 표시됩니다.
  6. 출력이 표시되어야 합니다.psql (x.x.x) Type "help" for help.

기본 template1 데이터베이스를 사용하여 로그인:

#psql -d template1
#template1=# \l

  List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(3 rows)

userId를 사용하여 데이터베이스를 만듭니다.

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE

종료하고 다시 로그인합니다.

template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Type "help" for help.

gogasca=# \l
                                List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(4 rows)

Mac에서 postgresql을 열려고 할 때 동일한 오류가 발생했습니다.

psql: FATAL:  database "user" does not exist

이 문제를 해결하기 위한 간단한 명령을 찾았습니다.

방법1

$ createdb --owner=postgres --encoding=utf8 user

및 유형

 psql

방법 2:.

psql -d postgres

후 Postgres 설치전 12.2인우명실행다니습했령을래아경을 했습니다.createdb.

$ createdb `whoami`

$ psql

psql (12.2)
Type "help" for help.

macuser=# 

1단계:

psql -d template1

이제 당신은 psql 터미널에 있어야 합니다.

2단계:

CREATE DATABASE username;

데이터베이스 이름 에 세미콜론(;)을 사용해야 합니다.

유형: on psql 파일 형식: on psql 파일 형식\ls또는\l모든 데이터베이스를 나열합니다.

3단계:

psql -h localhost

이제 연결되어야 합니다.

사용해 보십시오.

psql -d postgres

해 있었습니다.psql

같은 문제를 가지고 있었어요, 단순한.psql -d postgres it ) do it (실행)

이 오류는 환경 변수 PGDATABASE가 존재하지 않는 데이터베이스의 이름으로 설정된 경우에도 발생할 수 있습니다.

OSX에서 Postgress.app 메뉴에서 psql을 시작하는 동안 다음 오류가 발생했습니다.

psql: FATAL: database "otherdb" does not exist

오류에 대한 해결책은 제거하는 것이었습니다.export PGDATABASE=otherdb~/.bash_profile:

또한 PGUSER가 사용자 이름이 아닌 다른 항목으로 설정된 경우 다음 오류가 발생합니다.

psql: FATAL: role "note" does not exist

은 해책은제것입다니는하거를 제거하는 입니다.export PGUSER=notme~/.bash_profile.

답변에 이미 추가되었는지 확실하지 않은 Anatoliii Stephaniuk 답변은 다음과 같은 매우 유용했습니다.

psql -U Username postgres # when you have no databases yet

작성된 b 문서에 명시된 바와 같이,

데이터 저장 영역이 초기화될 때 항상 initdb 명령에 의해 첫 번째 데이터베이스가 생성됩니다...이 데이터베이스를 postgres라고 합니다.

특정 것이 합니다( 된 따라특 OS/postgresql 배포표다수르게는행경하기다본/우준이것확니합아실닌이서정를이에서표▁verified▁that▁sojust따/standard▁(다/▁the▁is▁default▁certainly▁it▁not/▁certain확라니▁ifinitdbSUSE 13.1은 DB "postgres"를 작성하지만 "<user>"는 작성하지 않습니다. 단히말해서간,서해말,psql -d postgres는 "postgres"가 아닌 다른 사용자를 사용할 때 사용될 것으로 예상됩니다.

분명히 받아들여진 답은, 달리는 것입니다.createdb사용자와 동일한 이름의 DB를 작성합니다. 또한 작동하지만 불필요한 DB를 작성합니다.

이 질문은 검색 결과의 첫 번째 질문이기 때문에 제목이 중복되지 않도록 다른 문제에 대한 다른 해결책을 여기에 넣겠습니다.

에서 쿼리 파일을 실행할 때 동일한 오류 메시지가 나타날 수 있습니다.psql데이터베이스를 지정하지 않습니다.없기 때문에usepostgresql의 문은 명령줄에 데이터베이스를 지정해야 합니다. 예:

psql -d db_name -f query_file.sql

먼저, 데이터베이스 이름을 명시적으로 선언하지 않고 기본 데이터베이스만 사용하고 새 테이블을 만들려는 경우 오류를 방지하기 위해 현재 사용 중인 것과 동일한 이름의 데이터베이스를 만드는 것이 유용합니다.

"skynotify"를 사용자 이름으로 바꿉니다.

psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"

-d는 이 대화형 세션 중에 명시적으로 db 이름을 포함하지 않는 SQL 문의 기본값으로 사용할 데이터베이스를 명시적으로 선언합니다.

게시물 내용을 명확하게 파악하기 위한 기본 사항QL SERVER에 있습니다.

psql을 대화형으로 사용하려면 기존 데이터베이스에 연결해야 합니다.다행히도 다음과 같은 데이터베이스 목록을 psql에 요청할 수 있습니다.

psql -l

.

                                          List of databases
               Name               | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
----------------------------------+-----------+----------+-------------+-------------+-------------------
 skynotify                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 myapp_dev                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres                         | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 ruby-getting-started_development | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify          +
                                  |           |          |             |             | skynotify=CTc/skynotify
 template1                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify          +
                                  |           |          |             |             | skynotify=CTc/skynotify
(6 rows)

이렇게 하면 대화형 콘솔이 시작되지 않고 텍스트 기반 테이블만 단말기로 출력됩니다.

다른 답변에서 알 수 있듯이, 포스트그레스는 항상 작성되므로 콘솔을 다른 데이터베이스에서 작동시키려면 이 포스트그레스를 페일 세이프 데이터베이스로 사용해야 합니다.데이터베이스가 없는 경우, 데이터베이스를 나열한 다음 데이터베이스 중 하나를 사용합니다.

비슷한 방법으로 데이터베이스에서 테이블을 선택합니다.

psql -d postgres -c "\dt;"

내 "postgres" 데이터베이스에는 테이블이 없지만, 테이블이 있는 모든 데이터베이스는 터미널에 텍스트 기반 테이블을 출력합니다(표준 출력).

완전성을 위해 테이블에서 모든 행을 선택할 수도 있습니다.

psql -d ruby-getting-started_development -c "SELECT * FROM widgets;"

.

 id | name | description | stock | created_at | updated_at 
----+------+-------------+-------+------------+------------
(0 rows)

반환된 행이 0개라도 필드 이름이 표시됩니다.

테이블의 행 수가 12개를 초과하거나 확실하지 않은 경우에는 행 수부터 시작하여 데이터베이스에 있는 데이터 양을 파악하는 것이 더 유용합니다.

 psql -d ruby-getting-started_development -c "SELECT count(*) FROM widgets;"

.

 count 
-------
     0
(1 row)

또한 "1개의 행"은 쿼리에 의해 반환되는 행의 수를 나타낼 뿐이지만, 1개의 행에는 원하는 카운트(이 예에서는 0)가 포함되어 있습니다.

참고: 소유자가 정의되지 않은 상태로 작성된 DB는 현재 사용자가 소유합니다.

JDBC 드라이버를 사용하는 데 문제가 있었기 때문에 URL의 호스트 이름 뒤에 데이터베이스를 추가하면 됩니다(사용할 수 있는 도구에 따라 중복될 수 있음).

자세한 내용은 여기에 문서화되어 있습니다. http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT

기존 슈퍼유저를 통해 postgres에 연결합니다.

postgres에 연결할 사용자 이름으로 데이터베이스를 작성합니다.

create database username;

이제 사용자 이름을 통해 연결 시도

이것은 이 문제를 해결할 때 저에게 효과가 있었습니다.

나는 내 포스트그레스 데이터베이스에 액세스하기 위해 sudo -i -u postgress -->를 실행했습니다.

그런 다음 암호를 입력합니다.

이제 psql을 입력하여 다른 명령을 입력할 수 있습니다.

건배!

홈브루를 통해 postgresql을 설치할 때 이 문제가 발생했습니다.

다음을 사용하여 기본 "postgres" 슈퍼 사용자를 만들어야 했습니다.

createuser --슈퍼 사용자에 대한 예방적인 사후 대응

createuser 사용자 --슈퍼 사용자에 대한 적극적인 사용자 응답

환경 변수 PGDATABASE=dll_name에서 연결할 데이터베이스 이름을 설정할 수 있습니다.이 psql을 설정하지 않으면 기본 데이터베이스 이름은 사용자 이름입니다. 설정한 후에는 b를 생성할 필요가 없습니다.

도커에서 포스트그레스를 실행하고 있었습니다.CLI에서 "root" 역할이 존재하지 않습니다.라는 오류가 발생했습니다.

초-포스트그레스

psql

문제를 해결했습니다.

PostgreSQL은 Postgre에서 생성되는 시스템에 자체 사용자가 있습니다.SQL이 설치되었습니다.Postgres 사용자는 Postgre에 로그인할 수 있습니다.암호를 사용하지 않고 SQL을 수행합니다.다른 사용자가 Postgre에 로그인할 수 없습니다.SQL.

즉, Postgre를 사용하기 전에SQL, 다음 명령을 사용하여 해당 사용자 계정으로 전환해야 합니다.

su - postgres 그러면 Posgre에 로그인할 수 있습니다.다음 명령을 사용하는 SQL 클라이언트:

psql 다른 사용자처럼 명령줄에서 데이터베이스에 액세스할 수 없습니다.

홈브루를 사용하여 postgresql을 설치한 후에도 위와 같은 문제가 발생했습니다. /usr/local/bin보다 먼저 경로에 /usr/local/bin을 넣어 해결했습니다.

이것은 기본적인 오해입니다.간단히 입력:

1그램당

다음과 같은 응답이 발생합니다.

pgres <db_name> 

사용자가 DB에 접근할 수 있는 권한을 가지고 있다면 오류 없이 성공할 것입니다.

내보낸 환경 변수의 세부 정보를 살펴볼 수 있지만 그럴 필요는 없습니다.이것은 다른 이유로 실패하기에는 너무 기본적입니다.

언급URL : https://stackoverflow.com/questions/17633422/psql-fatal-database-user-does-not-exist

반응형