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=>
ясно показывая, что что-то случилось.