2012-06-06 4 views
3

Я новичок в PostgreSQL, и у меня проблема с тем, что я воспринимаю как простую команду DROP DATABASE и DROPDB. Почему следующие команды не удаляют мою базу данных?Не удается удалить базу данных

postgres=# drop database clientms 
postgres-# \l 
            List of databases 
    Name | Owner  | Encoding | Collate | Ctype | Access privileges 
-----------+--------------+----------+-------------+-------------+----------------------- 
clientms | clientmsuser | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | 
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 
(4 rows) 

postgres-# dropdb clientms 
postgres-# \l 
            List of databases 
    Name | Owner  | Encoding | Collate | Ctype | Access privileges 
-----------+--------------+----------+-------------+-------------+----------------------- 
clientms | clientmsuser | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | 
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 
(4 rows) 

ответ

15

Вы забыли запятую ; после команды. Попробуйте:

DROP DATABASE clientms; 

Неполная команда также указывается в приглашении: - вместо =. Это позволяет многострочные команды.

+0

Yup! Люди часто оставляют это в сообщениях по теме, которые я видел :( – Sevenearths

+0

В зависимости от клиента точка с запятой может не потребоваться для одной команды. Однако это требуется в интерактивном psql. –

+1

Вы можете использовать -S или - single-line, чтобы избавиться от требуемой точки с запятой. –

0

Видимо destroydb clientms работы (у меня ушло много копать, хотя) [link]

+0

Нет такой команды. Я предполагаю, что вы имеете в виду 'destroydb', которая является древней формой современного инструмента командной строки [' dropdb'] (http: // www .postgresql.org/docs/current/interactive/app-dropdb.html). –

+0

Справа от исправления! – Sevenearths

+1

Разница заключается в том, что 'destroydb' (вернее, инструмент командной строки' dropdb') не запускается 'psql', но через оболочку unix или файл cmd.exe для Windows. Команды в оболочках unix и cmd.exe завершаются символом новой строки, а не точкой с запятой, поэтому вы на самом деле выполняли команду при работе с оболочкой. –

1

Досадно Я уже решил эту проблему, а затем столкнулся с ним еще раз в год, а чуть позже и решил это по-другому, потому что я Ждут» я заметил, что у меня уже есть заметки о том, как это исправить. Вот мои заметки:

http://www.itsupportforum.net/topic/unable-to-delete-drop-postgresql-database/

В общем, я не мог удалить БД, так как она была в использовании интерфейсом, который я использовал, чтобы удалить его. Тупой.

+0

A ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без него - ** укажите наиболее релевантную часть решения ** со страницы, на которую вы ссылаетесь, в случае недоступности целевой страницы. Ответы, которые немного больше, чем ссылка, могут быть удалены. – SherylHohman