DBeaver/PostgreSQL:"Error: database already exists",但我找不到它。

15
我想通过右键单击PostgreSQL并选择创建数据库来创建名为“President”的数据库。

然而,我在下面的屏幕截图中遇到了错误。

我可以创建其他名称的数据库,例如SomeOtherDatabaseSomeOtherDatabase2(请参见屏幕截图)。

有什么办法可以找到并删除似乎已经存在的“President”数据库吗?

enter image description here enter image description here

更新!!

如果我执行

select * from pg_database 

我得到了以下结果:

enter image description here

数据库“President”似乎存在。(同时我已经删除了“someOtherDatabase”和“someOtherDatabase2”。)
但是,如果我执行
drop database President

我得到:

enter image description here

3个回答

46

您可以右键单击 postgres 数据库,然后选择 编辑连接 选项。在 PostgreSQL 选项卡下,勾选 显示所有数据库 选项。


14
为什么这不是默认选项? - aeischeid
5
天啊!花了2个小时才搞明白。谢谢! - AmirA
非常感谢您!我花了至少一个小时来尝试解决这个问题! - Michael Cacciano

17

2023更新

  1. 在连接上右键单击
  2. 点击“编辑连接”
  3. 左侧面板,点击“连接设置”
  4. 选择PostgreSQL选项卡并勾选“显示所有数据库”复选框

输入图像描述

输入图像描述


4
你可以查询目录视图pg_database来检查数据库是否已经存在:
select datname from pg_database WHERE datname = 'president'

并使用 drop database 命令删除它:

drop database president;

请注意,Postgres的drop database语法支持if exists子句,在您的用例中可能会派上用场:
drop database if exists president;

谢谢。由于“select datname from pg_database WHERE datname ='President'”返回“President”,因此数据库似乎存在。但是,“drop database President”返回“SQL错误[3D000]: ERROR: database"president"不存在”。 - Frank
2
@Frank:你使用双引号创建了数据库,所以现在名称是区分大小写的。你需要使用drop database "President"。并且你应该避免在将来使用双引号标识符 - user330315
@a_horse_with_no_name,它起作用了!!非常感谢 :-) 我完全被困惑了,这绝对是有用的知识。 - Frank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接