没有数据库名称的Postgres JDBC

问题描述 投票:0回答:1

我想编写一个连接到 PostgreSQL 服务器的程序,以便创建一个新数据库(即,它的第一个语句是

CREATE DATABASE
)。如果您使用没有数据库名称的 JDBC URL(例如,
jdbc:postgresql://localhost
),Postgres 会尝试连接到以用户命名的数据库,如果该数据库不存在,则会失败。如何使用 JDBC 连接到服务器但没有特定的数据库?

postgresql jdbc
1个回答
0
投票

PostgreSQL 默认有一个名为

postgres
的数据库,其明确目的是接收连接,然后创建或删除数据库。所以你应该使用它。

PostgreSQL 还有两个默认数据库,

template0
template1
。前者不接受连接,但后者接受。在非常旧的 PostgreSQL 版本中,在发明
postgres
之前,
template1
被用作连接的数据库以创建数据库。问题在于,如果有人
else
连接到 CREATE DATABASE
template1
就会失败,因此并发执行像
createdb
这样的工具会出现竞争条件。

为了安全起见,您可以执行 PostgreSQL 实用程序的操作:连接到

postgres
,如果失败,则连接到
template1
。任何删除这两个数据库的人都会严重破坏他们的数据库集群,因此可以放心地打折扣。

© www.soinside.com 2019 - 2024. All rights reserved.