2010-11-16 5 views
0

У меня есть приложение, которое подключается к MySQL 5-Server через ODBC-драйвер. Иногда я использую готовые/параметризованные пакетные операторы для простого перемещения данных на сервере. Это работает прекрасно, до того момента, что-то пошло не так ...Получить сведения об исключении из пакетного оператора

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

Не уверен, что это действительно решит вашу проблему (подробности в исключениях БД), но вы считали, что используете вместо этого драйвер .Net для MySQL (aka ADO.NET Driver for MySQL) вместо драйвера ODBC?

Вы можете скачать разъем здесь: http://www.mysql.com/products/connector/

Update:
Просто посмотрел в MSDN в классе OdbcException. Похоже, что у него есть свойство, называемое Errors, которое содержит коллекцию классов OdbcError. Любой экземпляр этих классов должен иметь описание каждой из обнаруженных ошибок. Пожалуйста, дайте мне знать, если это поможет.

Update2:
Кажется, что около года назад ошибка была отправлена ​​команда MySql, связанной с проблемой вы столкнулись: http://bugs.mysql.com/bug.php?id=49466

Исправлена ​​ошибка, кажется, не быть фиксированной, так что вы ничего не можете сделать в своем приложении .Net.

В описании ошибки говорится, что это проблема с коннектором ODBC. Я не уверен на 100%, что это так. Если вы когда-либо переключаетесь на .Net-коннектор, пожалуйста, отправьте сообщение и сообщите нам, если это решит проблему.

+0

Да, я подумал об использовании этого (не из-за этого, но в целом). Но на данный момент я застрял с ODBC-Connector, и я не уверен, изменится ли это в ближайшем будущем, поскольку это будет связано не только с изменением уровня данных, но и со всеми клиентскими машинами. – Bobby

+0

Закройте вызов, но, к сожалению, он содержит только 'необработанную ошибку из mysql_next_result()' error. :( – Bobby

+0

Спасибо, что отвечает на это тогда. :) – Bobby

Смежные вопросы