从批处理语句中获取异常详细信

时间:2010-11-16 10:04:55

标签: c# .net mysql

我有一个应用程序通过ODBC-Driver连接到MySQL 5-Server。有时我使用准备/参数化的批处理语句来轻松地在服务器上移动数据。这很有效,直到出现问题......

INSERT INTO blabla SELECT blablabla;
INSERT INTO blabla SELECT bliblibli;
UPDATE blabla;
// etc.

现在如果这个陈述出错了,我会得到一个非常无益的例外:

System.Data.Odbc.OdbcException
ERROR [HY000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.26-pro-nt]unhandled error from mysql_next_result()
   at System.Data.Odbc.OdbcDataReader.NextResult(Boolean disposing, Boolean allresults)
   at System.Data.Odbc.OdbcDataReader.NextResult()
   at System.Data.Odbc.OdbcDataReader.FirstResult()
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
   at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
   at MyApp.MyClass.MyData.WhyAreYouReadingThis()

InnerExceptions为空。

我是否能够提取有关该问题的更多信息? F.E.如果我没有使用批处理语句,我会收到确切的错误消息,但如果我有批处理语句则不会。

1 个答案:

答案 0 :(得分:1)

不确定这是否真的可以解决您的问题(数据库异常中的更多细节),但是您是否考虑过使用MySQL的.Net连接器(也就是用于MySQL的ADO.NET驱动程序)而不是ODBC驱动程序?

您可以从此处下载连接器:http://www.mysql.com/products/connector/

<强>更新
刚刚在OdbcException类中查看了MSDN。它似乎有一个名为Errors的属性,它包含一个OdbcError类的集合。这些类的任何实例都应该具有每个遇到的错误的描述。如果有帮助,请告诉我。

<强> UPDATE2:
大约一年前,似乎已向MySql团队提交了与您遇到的问题相关的错误:http://bugs.mysql.com/bug.php?id=49466

该错误似乎没有修复,因此您无法在.Net应用程序中对此进行任何操作。

在错误描述中,据说这是ODBC连接器特定的问题。我并非100%确定是这种情况。如果你曾经切换到.Net连接器,请发一条消息告诉我们是否解决了这个问题。