2012-11-15 97 views
-1

检查数据库的方法是否已经存在或不存在于PostgreSQL中?创建数据库时出错postgresql

Iam是PostgreSQL中的新成员。 而且还需要通过jdbc驱动程序从我的Java应用程序中检查它。

回答

1

我发现这个问题的一个替代的解决方案。通过使用下面的查询:

 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"); 
     } 

它的做工精细

3

没有在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 
+0

这是我得到9.1: –

+0

@FrankHeikens教我没有测试“CREATE DATABASE不能从功能或多命令字符串来执行”所有案件;我用现有的数据库检查了函数语法,但实际上并没有创建一个。 –