连接时出现Npgsql异常

时间:2012-09-04 14:43:33

标签: c# npgsql

我在C#.NET 4.0应用程序中使用Npgsql 2.0.11.94连接到PostgreSql数据库。我已经根据他们网站上的示例形成了连接字符串,当我调用连接NpgsqlConnection对象时,抛出了这个异常:

A first chance exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll

Additional information: ERROR: 22023: 3 is outside the valid range for parameter "extra_float_digits" (-15 .. 2)

抛出异常后代码将正确执行。也就是说,确实建立了与数据库的连接,并且查询返回了正确的数据。有谁知道它为什么抛出这个例外?这是我连接到db的代码:

string strConnection = "Server=192.168.253.20;Port=5432;User Id=alex;Password=asdf;Database=mydatabase;";
NpgsqlConnection conn = null;
try
{
    conn = new NpgsqlConnection(strConnection);
    conn.Open();
}
catch (Exception e)
{
}

非常感谢任何帮助。

谢谢, 亚历

3 个答案:

答案 0 :(得分:5)

这是建立连接时初始设置的错误。

在首次打开的每个连接上都会执行一些不同的命令(但在重新使用池连接时不会重复执行),并且这个命令试图处理浮动允许的不同精度 - 不同版本的PostgreSQL之间的数字格式。

显然它没有按计划进行。

快速查看源代码,似乎调用已被包装并且应该吃任何此类异常,但也许这是在最后一次发布之后。如果是这样,那么从源代码构建可以解决您的问题。

或者您可以返回一个版本,或者只使用try-catch包装直到下一个版本。

答案 1 :(得分:5)

Jon Hanna正确地解释了为什么我们有这样的try-catch以及为什么会抛出异常。问题是VS.net会向你显示抛出的任何异常,即使是像Npgsql这样的try-catch异常处理正在执行的异常。

我认为vs.net正确地表达了这样的行为,尽管它们正在被处理,但仍有异常被抛出,在这种特定情况下,只是被忽略了。

您可以检查只有在使用vs.net调试代码时才会出现此异常。另外,正如您也注意到的那样,您的代码继续工作,好像没有发生任何错误。所以,你不必担心这一点。

我希望它有所帮助。

答案 2 :(得分:0)

我想您在管理Visual Studio项目时遇到此异常,因此请尝试在MainMenu中取消选中 - > Debug - >公共语言运行时异常和托管调试助手列表的例外情况。 祝好运! :))) 保罗