Postgresql이 수퍼 유저로 "createdb"를 사용하여 db를 생성하지 않지만 오류를 출력하지 않음 [중복]


100

나는 'postgres'슈퍼 유저와 함께 새로운 postgresql 설치로 작업하고 있습니다. 다음을 통해 로그인 :

sudo -u postgres psql


postgres=# createdb database
postgres-# \list
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 template0 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres

오류는 없지만 테이블이 생성되지 않습니다. 어떤 아이디어?


답변:


209

createdb는 psql이 아닌 bash 에서 실행할 수있는 명령 줄 유틸리티입니다 . psql 에서 데이터베이스를 만들려면 다음 create database과 같은 문을 사용하십시오 .

create database [databasename];

참고 : 항상 SQL 문을 ;


35
고마워, 내가 지금 때릴거야. :)
Damien Roche

확실한. 쉬운 포인트;) 아직 7 분을 기다려야합니다 (분명히). 다시 한 번 감사드립니다.
Damien Roche 2012

35
마지막에 세미콜론을 추가하는 것을 잊지 마세요 ..;
티모시 달튼에게

4
승리를위한 세미 콜린!
Michael Dimmitt

1
감사합니다! 세미콜론이 나를 위해 일했습니다. 너무 작지만 삶의 변화;)
sas

75

파티에 늦었지만 수락 된 답변은 오류가 표시되지 않는 이유를 설명하지 않습니다. 그리고 이것은 Postgres 신규 이민자들이 종종 우연히 발견하는 것이므로 추가하고 싶었습니다.


TL / TR : 항상 SQL 문을 ;


createdb database끝나지 않았다고 ; psql생각 하기 때문에 문이 완료되지 않았으며 더 많은 입력을 기다립니다. 이는에서 postgres=#으로 변경되는 프롬프트로 표시됩니다 postgres-#. 내가 바라는 극히 미묘한 변화 psql는 다르게 할 것입니다 (더 "눈에 띄는").

메타 명령을 입력하면 \list"현재"SQL 문이 실행되지 않고 "중단"됩니다.

는 IF createdb로 종료되었다 ;출력했을 것이다 :

postgres => createdb foobar;
오류 : "createdb"또는 그 근처에 구문 오류가 있습니다.
행 1 : createdb foobar;
        ^
postgres =>

뭔가 잘못되었음을 분명히 보여줍니다.


3
와, 정말 미묘하지만 치명적입니다. 나는 꽤 오랫동안이 문제를 겪고있었습니다. 세미콜론으로 명령을 처음 실행하면 createdb유효하지 않기 때문에 오류가 발생 합니다. 그러나 세미콜론 create database대신 똑같은 명령을 반복하면 createdb완벽하게 작동합니다.
Glen Selle

1
@Helsing :이 없었다가 유효하지 않은 경우에도 오류 메시지가 왜 쓴거야 그, 그냥 설명
a_horse_with_no_name

@a_horse_with_no_name 네, 당신의 목적을 오해했습니다. 귀하의 답변도 찬성했습니다.
Helsing

3

나는 얼마 전에 이런 상황에 처해 있었다. 다른 사람이 이것을 경험하는 경우 명령 프롬프트 postgres-#에 단순히 입력 ;하고 리턴 키 를 입력하여 보류중인 createdb 명령을 실행할 수 있다는 것을 고려 하면됩니다 .


1

PostgreSQL에서 새 데이터베이스를 만드는 것은 매우 간단합니다. Linux에서 다음 명령을 실행합니다 (CentOS 7 예).

sudo -u postgres psql -c "create database MyDb;"

0

노드 터미널을 사용하여 다음을 실행해야했습니다.

psql -U postgres 

[비밀번호 입력]

그럼 ...

CREATE DATABASE dbadmin;

혼란스러운 점은 이전에 동일한 명령을 입력했지만 작동하지 않았다는 것입니다. 로그 아웃하고 다시 로그인 한 후에야 문서에서이 표준 명령을 사용할 수있었습니다 : https://www.postgresql.org/docs/10/tutorial-createdb.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.