为什么 Postgresql 告诉我数据库不存在?

Dan*_*iel 4 postgresql

我创建了一个 Ruby on Rails 应用程序只是为了向同事演示,然后删除了该应用程序,但我没有删除同样使用 Postgresql 创建的数据库。

我像这样进入 posgresql:

psql postgres

postgres=# \l
                                            List of databases
                 Name                 | Owner  | Encoding |   Collate   |    Ctype    | Access privileges
--------------------------------------+--------+----------+-------------+-------------+-------------------
 GenerateApp_development              | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 GenerateApp_test                     | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 GeneratorApp_development             | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 GeneratorApp_test                    | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 Overtime_development                 | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 Overtime_test                        | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 RoutingApp_development               | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 RoutingApp_test                      | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 dancortesPortfolio_development       | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 dancortesPortfolio_test              | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 freelance_camp_documents_development | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 freelance_camp_documents_test        | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 freelance_camp_proposal_development  | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 freelance_camp_proposal_test         | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres                             | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0                            | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/danale        +
                                      |        |          |             |             | danale=CTc/danale
 template1                            | danale | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/danale        +
                                      |        |          |             |             | danale=CTc/danale
(17 rows)
Run Code Online (Sandbox Code Playgroud)

我想删除那些说 RoutingApp_development 和 test 的。

postgres=# DROP DATABASE RoutingApp_development;
ERROR:  database "routingapp_development" does not exist
Run Code Online (Sandbox Code Playgroud)

我得到了上面的错误。我试图在网上搜索为什么会发生这种情况,但没有成功找到答案,请帮助。

Eva*_*oll 5

您需要将名称双引号。在 PostgreSQL 中,我们从不使用双引号名称。如果您遵循约定,PostgreSQL 会将未加引号的标识符转换为小写。在您的情况下,创建数据库的那个使用了双引号。

现在您的标识符中有一个大写字母。

从现在开始,您必须将标识符加双引号。

不是,

postgres=# DROP DATABASE RoutingApp_development;
Run Code Online (Sandbox Code Playgroud)

但,

postgres=# DROP DATABASE "RoutingApp_development";
Run Code Online (Sandbox Code Playgroud)