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