Postgresql не создает БД с" createdb " в качестве суперпользователя, но не выводит ошибок
Я работаю со свежей установкой postgresql, с супер-пользователем "postgres". Войти через:
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
нет ошибок, но таблица не создается. Есть идеи?
2 ответов
createdb - это утилита командной строки, которую вы можете запустить из Баш и не из psql. 
Чтобы создать базу данных из psql в используйте create database утверждение так:
create database [databasename];
Примечание: обязательно всегда заканчивайте свои SQL-операторы с ;
поздно на вечеринку, но принятый ответ не объясняет, почему не отображается ошибка. И поскольку это то, на что часто натыкаются новички Postgres, я хотел бы добавить это.
TL / TR: всегда заканчивайте операторы SQL с ;
потому что createdb database не заканчивается ; psql думает, что оператор не закончен и ждет большего ввода. Об этом свидетельствует быстрое изменение от postgres=# to postgres-#. Весьма тонкое изменить, что я желаю psql сделал бы по-другому (более "видным"). 
введя мета-команду \list "текущая" инструкция SQL "прерывается" без ее выполнения. 
если createdb была прекращена с ; вывод был бы:
postgres=> createdb foobar;
ERROR:  syntax error at or near "createdb"
LINE 1: createdb foobar;
        ^
postgres=>
ясно показывая, что что-то случилось.
