Pracuję ze świeżą instalacją postgresql, z superużytkownikiem „postgres”. Zalogowano przez:
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
Brak błędów, ale tabela nie jest tworzona. Jakieś pomysły?
postgresql
psql
Damien Roche
źródło
źródło
Odpowiedzi:
createdb
to narzędzie wiersza poleceń, które można uruchomić z basha, a nie z psql. Aby utworzyć bazę danych z psql , użyj poniższejcreate database
instrukcji:Uwaga: pamiętaj, aby zawsze kończyć instrukcje SQL znakiem
;
źródło
;
Spóźniłem się na przyjęcie, ale zaakceptowana odpowiedź nie wyjaśnia, dlaczego nie jest wyświetlany żaden błąd. A ponieważ jest to coś, na co nowicjusze Postgres często napotykają, chciałem to dodać.
TL / TR: zawsze kończ swoje instrukcje SQL ciągiem
;
Ponieważ
createdb database
nie kończy się na,;
psql
uważa, że instrukcja nie jest zakończona i czeka na dalsze dane wejściowe. Wskazuje na to monit zmieniający się zpostgres=#
napostgres-#
. Niezwykle subtelna zmiana, którąpsql
chciałbym zrobić inaczej (bardziej „widoczna”).Wprowadzenie meta-polecenia
\list
powoduje „przerwanie” „bieżącej” instrukcji SQL bez jej wykonywania.Gdyby
createdb
zostało zakończone a,;
wynik wyglądałby tak:Wyraźnie pokazując, że coś jest nie tak.
źródło
createdb
jest nieprawidłowy. Ale potem powtórzenie dokładnie tego samego polecenia zcreate database
zamiastcreatedb
ze średnikiem działa idealnie.Niedawno byłem w takiej sytuacji. Na wypadek, gdyby ktoś inny tego doświadczył, biorąc pod uwagę, że
postgres-#
wiersz polecenia pokazuje, że można wykonać oczekujące polecenie createdb, po prostu wpisując;
i klawisz powrotu.źródło
Tworzenie nowej bazy danych w PostgreSQL jest bardzo proste, wykonaj to polecenie w systemie Linux (przykład z CentOS 7):
źródło
Korzystając z terminala węzłowego, musiałem uruchomić:
[Wprowadź hasło]
następnie ...
Mylące jest to, że wprowadziłem te same polecenia wcześniej i nie zadziałało. Dopiero po wylogowaniu i ponownym zalogowaniu mogłem skorzystać z tego standardowego polecenia z dokumentacji: https://www.postgresql.org/docs/10/tutorial-createdb.html
źródło