模拟PostgreSQL中的CREATE DATABASE IF NOT EXISTS?

220
我想通过 JDBC 创建一个数据库,但 PostgreSQL 不像 MySQL 支持 create if not exists 语法。如何实现创建不存在的数据库呢?
应用程序并不知道该数据库是否存在。它应该检查,如果数据库存在就使用它。因此,连接到所需的数据库,如果由于数据库不存在而连接失败,则应该连接到默认的postgres数据库创建新数据库。我检查了Postgres返回的错误代码,但没有找到任何相关的代码。
另一种方法是连接到postgres数据库并检查所需的数据库是否存在,并根据情况采取行动。第二种方法比较繁琐。在Postgres中有没有实现这种功能的方法?
11个回答

-2

只需使用createdb CLI工具创建数据库:

PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB

如果数据库存在,它会返回一个错误:
createdb: database creation failed: ERROR:  database "mydb" already exists

1
OP不希望出现发送错误的情况,因为这可能会导致脚本崩溃。 - Reda Drissi
script.sh &> /dev/null 这样就不会崩溃了。 - Jean F.
1
数据库创建可能会在除已存在之外的其他情况下崩溃。其他原因将被您的解决方案默默隐藏。 - emi

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