Postgresql süper kullanıcı olarak "oluşturulmuşb" ile db oluşturmuyor, ancak hata vermiyor [yineleme]


106

'Postgres' süper kullanıcısıyla yeni bir postgresql kurulumuyla çalışıyorum. Şu yolla giriş yapıldı:

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

Hata yok, ancak tablo oluşturulmuyor. Herhangi bir fikir?


Yanıtlar:


219

createdbEğer çalıştırabileceğiniz bir komut satırı aracıdır bash psql'in başında değil ve. Psql'den bir veritabanı oluşturmak için şu create databaseifadeyi kullanın :

create database [databasename];

Not: SQL ifadelerinizi her zaman sonlandırdığınızdan emin olun. ;


38
Teşekkürler, şimdi kendimi tokatlayacağım. :)
Damien Roche

1
Elbette. Kolay noktalar;) Henüz 7 dakika beklemeniz gerekiyor (görünüşe göre). Tekrar teşekkürler.
Damien Roche

37
sonuna noktalı virgül eklemeyi unutmayın ..;
Timothy Dalton

6
kazanmak için o yarı-colin!
Michael Dimmitt

2
Teşekkür ederim! yarı noktalı virgül işi benim için yaptı. çok küçük ama hayat değiştiriyor;)
sas

75

Partiye geç kaldı, ancak kabul edilen cevap neden hiçbir hatanın gösterilmediğini açıklamıyor. Ve bu Postgres'e yeni gelenlerin sık sık karşılaştığı bir şey olduğundan, bunu eklemek istedim.


TL / TR: SQL ifadelerinizi her zaman ;


Çünkü createdb databaseile bitmiyor ; psqldeyimi daha giriş için bitmiş ve bekler değildir düşünüyor. Bu istemi değiştirilmesi ile gösterilir postgres=#için postgres-#. psqlFarklı bir şekilde yapmasını dilediğim son derece ince bir değişiklik (daha "belirgin").

Meta komutu girildiğinde, \list"mevcut" SQL deyimi çalıştırılmadan "durdurulur".

Bir createdbile bitmiş ;olsaydı, çıktı şöyle olurdu:

postgres => oluşturulanb foobar;
HATA: "oluşturulanb" konumunda veya yakınında sözdizimi hatası
SATIR 1: oluşturulmuş foobar;
        ^
postgres =>

Bir şeylerin yanlış olduğunu açıkça gösteriyor.


4
Vay canına, bu gerçekten ince ama ölümcül. Bir süredir bu sorunu yaşıyordum. Komutu noktalı virgülle ilk çalıştırdığınızda, createdbgeçerli olmadığı için hatayı alırsınız . Ancak aynı komutu noktalı virgül create databaseyerine ile tekrarlamak createdbmükemmel şekilde çalışır.
Glen Selle

1
@Helsing: Yazdığım buydu, geçersiz olmasına rağmen neden bir hata mesajı olmadığını açıkladım
a_horse_with_no_name

@a_horse_with_no_name Evet, amacınızı yanlış anladım. Cevabınızı da olumlu oyladı.
Helsing

3

Kısa süre önce bu durumdaydım. Başka birinin bunu deneyimlemesi durumunda, komut isteminin postgres-#beklemede olan createdb komutunu sadece ;ve dönüş tuşunu yazarak çalıştırabileceğinizi gösterdiğini düşünürsek .


1

PostgreSQL'de yeni veri tabanı oluşturmak çok basittir, bu komutu Linux'ta çalıştırın (CentOS 7 örneği):

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

0

Bir düğüm terminali kullanarak şunu çalıştırmam gerekiyordu:

psql -U postgres 

[şifrenizi girin]

sonra ...

CREATE DATABASE dbadmin;

Kafa karıştırıcı olan, aynı komutları daha önce girdim ve işe yaramadı. Yalnızca çıkış yapıp tekrar giriş yaptıktan sonra, bu standart komutu dokümantasyondan kullanabildim: https://www.postgresql.org/docs/10/tutorial-createdb.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.