之前,在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#代码创建用户的情况相同。
有什么想法吗?
答案 0 :(得分:1)
这是3.0.0中的问题,已经修复 - 3.0.1将在几天内发布此修复程序。
https://github.com/npgsql/npgsql/issues/703
仅仅是因为@a_horse_with_no_name说,在PostgreSQL中你总是连接一个数据库。如果省略数据库名称PostgreSQL,则默认为与用户名匹配的数据库。