我有一个通过ODBC驱动程序连接到MySQL 5服务器的应用程序。有时,我使用准备好的/参数化的批处理语句来轻松地在服务器上移动数据。这工作得很好,直到出现问题的那一刻...
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.如果我没有使用批处理语句,我会得到确切的错误消息,但如果我使用了批处理语句,就不会得到确切的错误消息。
发布于 2010-11-16 19:03:14
不确定这是否真的能解决您的问题(在DB exceptions中有更多详细信息),但是您是否考虑过使用MySQL的.Net连接器(也就是MySQL的ADO.NET驱动程序)而不是ODBC驱动程序?
您可以从这里下载连接器:http://www.mysql.com/products/connector/
更新:
我在MSDN中查看了OdbcException类。它似乎有一个名为Errors的属性,该属性包含一个OdbcError类的集合。这些类的任何实例都应该有每个遇到的错误的描述。如果有帮助,请让我知道。
Update2:
似乎大约一年前,一个与您所面临的问题相关的bug被提交给了MySql团队:http://bugs.mysql.com/bug.php?id=49466
这个错误似乎还没有修复,所以您在.Net应用程序中对此无能为力。
在bug描述中,有人说这是一个ODBC连接器特有的问题。我不能百分之百地确定是不是这样。如果您切换到.Net连接器,也请发布一条消息,让我们知道这是否解决了问题。
https://stackoverflow.com/questions/4192966
复制相似问题