Подтвердить что ты не робот

Как удалить/создать имя базы данных с буквой верхнего регистра?

например, имя базы данных Postgresql Ajp

Я не могу сбросить/создать db с таким именем, т.е. Ajp

мои сценарии для drop

cd /D D:\\Apps
cd RSTAR PGSQL DOTCONNECT
cd bin
cd Debug
cd PG
psql -U postgres  -d postgres -c "DROP DATABASE  Ajp "

при выполнении этого я получил эту ошибку

D:\Apps\RSTAR PGSQL DOTCONNECT\bin\Debug\PG > psql -U postgres -d postgres -c "DR OP DATABASE Ajp" ОШИБКА: база данных "ajp" не существует

Я попробовал psql -U postgres -d postgres -c "DROP DATABASE 'Ajp' " (имя db в кавычках)

снова появилась ошибка

ОШИБКА: ошибка синтаксиса в точке или рядом с "Ajp" LINE 1: DROP DATABASE 'Ajp'

как исправить эту проблему?? (не прокомментируйте, что change your dbname to lower-case)

using : "PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 32-bit"

решение этой задачи ниже

  • Sholud использует escape-символ \
  • psql -U postgres -d postgres -c "DROP DATABASE \"Ajp\";"

    см. ниже

4b9b3361

Ответ 1

Идентификаторы SQL, чувствительные к регистру, должны быть заключены в двойные кавычки:

DROP DATABASE  "Ajp";

Не уверен, что они должным образом сохранены в Windows, если вы передаете их через командную строку.

Возможно, вам придется поместить это в SQL script и передать имя script в psql.

Подробнее о действительных идентификаторах читайте в руководстве: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS