npgsql 3.0:通过C#代码创建数据库

时间:2015-08-17 16:33:52

标签: postgresql npgsql

之前,在npgsql 2.2中,我可以通过c#代码创建一个新的PostgreSQL数据库,如下所示:

string strconn = String.Format("Server={0};Port={1};User Id={2};Password={3};",
  strServer, strPort, strUser, strPass);

NpgsqlConnection admconn = new NpgsqlConnection(strconn);

admconn.Open();
NpgsqlCommand command = new NpgsqlCommand("CREATE DATABASE " + strNewDB, admconn);
command.ExecuteNonQuery();
admconn.Close();

所以,你看,连接字符串中没有数据库名称。但当我迁移到npgsql 3.0时,这不起作用:打开连接时发生异常:“数据库不能为空”。

如果我在连接字符串中指定默认数据库“postgres”它可以工作,但是笑话是它在PostgreSQL中根本不是默认的postgres数据库甚至是数据库,最好不指定数据库来创建新数据库。 / p>

通过c#代码创建用户的情况相同。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是3.0.0中的问题,已经修复 - 3.0.1将在几天内发布此修复程序。

https://github.com/npgsql/npgsql/issues/703

仅仅是因为@a_horse_with_no_name说,在PostgreSQL中你总是连接一个数据库。如果省略数据库名称PostgreSQL,则默认为与用户名匹配的数据库。