PostgreSQL - 在名称中删除带有正斜杠的数据库

时间:2012-09-15 21:11:21

标签: postgresql

在我的Ruby-on-Rails database.yml文件中,我意外地在其名称中创建了一个带有正斜杠(/)的PostgreSQL数据库。

我无法通过psql命令删除此数据库,尝试使用各种转义序列。

1 个答案:

答案 0 :(得分:3)

用引号括起数据库名称:

DROP DATABASE "database/withslash";

来自Identifiers and Keywords文档:

  

还有第二种标识符:分隔标识符或带引号的标识符。它是通过用双引号(“)括起任意字符序列而形成的。分隔标识符始终是标识符,绝不是关键字。因此,”select“可用于引用名为”select“的列或表,而不带引号的选择将被视为关键字,因此在使用表格或列名称时会引发解析错误。该示例可以使用带引号的标识符编写,如下所示:

UPDATE "my_table" SET "a" = 5;
     

带引号的标识符可以包含任何字符,但代码为零的字符除外。

请注意引用的标识符区分大小写。

虽然连接该数据库时无法删除数据库,因此您可能希望使用命令行dropdb command。你的shell会解析引号,所以你想要转义引号:

dropdb \"database/withslash\"