for example my Postgresql
database name is Ajp
i cannot drop/create the db with this name ie. Ajp
my scripts for drop is
cd /D D:\\Apps
cd RSTAR PGSQL DOTCONNECT
cd bin
cd Debug
cd PG
psql -U postgres -d postgres -c "DROP DATABASE Ajp "
while executing this i got this error
D:\Apps\RSTAR PGSQL DOTCONNECT\bin\Debug\PG>psql -U postgres -d postgres -c "DR OP DATABASE Ajp " ERROR: database "ajp" does not exist
i tried psql -U postgres -d postgres -c "DROP DATABASE 'Ajp' "
(db name within quotes)
again got error
ERROR: syntax error at or near "'Ajp'" LINE 1: DROP DATABASE 'Ajp'
how fix this problem ?? (please don't comment that change your dbname to lower-case
)
using : "PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 32-bit"
the solution for this problem is below
\
psql -U postgres -d postgres -c "DROP DATABASE \"Ajp\";"
see the below comment
SQL identifiers that are case-sensitive need to be enclosed in double quotes:
DROP DATABASE "Ajp";
Not sure if they are properly preserved on Windows if you pass them through the commandline though.
You might need to put that into a SQL script and pass the script name to psql.
For details on valid identifiers please see the manual: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS