检查数据库的方法是否已经存在或不存在于PostgreSQL中?创建数据库时出错postgresql
Iam是PostgreSQL中的新成员。 而且还需要通过jdbc驱动程序从我的Java应用程序中检查它。
检查数据库的方法是否已经存在或不存在于PostgreSQL中?创建数据库时出错postgresql
Iam是PostgreSQL中的新成员。 而且还需要通过jdbc驱动程序从我的Java应用程序中检查它。
我发现这个问题的一个替代的解决方案。通过使用下面的查询:
ResultSet res = st.executeQuery("select count(*) from pg_catalog.pg_database where datname = 'sample'") ;
res.next();
int count = res.getInt("count");
System.out.println("Count : " + count);
if(count == 0) {
st.executeUpdate("CREATE DATABASE sample");
}
它的做工精细
没有在PostgreSQL中CREATE DATABASE
没有IF NOT EXISTS
选项。见CREATE DATABASE
。
您可以检查pg_database
,看是否存在数据库,并且只尝试,如果它不创建它。
您需要通过dblink要做到这一点,因为限制弗兰克在评论中指出的:
regress=> SELECT create_database_if_not_exists('test');
ERROR: CREATE DATABASE cannot be executed from a function or multi-command string
CONTEXT: SQL statement "CREATE DATABASE test"
PL/pgSQL function create_database_if_not_exists(text) line 6 at EXECUTE statement
这是我得到9.1: –
@FrankHeikens教我没有测试“CREATE DATABASE不能从功能或多命令字符串来执行”所有案件;我用现有的数据库检查了函数语法,但实际上并没有创建一个。 –