Соединитель Mysql — проблема MultipleActiveResultSets

Во-первых, я часами искал решение — может быть, мне просто нужна еще одна пара глаз для решения этой проблемы.

В настоящее время я кодирую приложение С# для себя (личное использование). Я запускаю последнюю библиотеку коннекторов MySQL с mysql.com.

Моя строка подключения

public string SQLConnection = "Server=localhost;Database=data;Uid=root;Pwd=ascent;charset=utf8;MultipleActiveResultSets=True;";

Моя проблема касается MultipleActiveResultSets=True; . Когда это включено в мою строку SQLConnection, библиотека MySQL не может подключиться. Посмотрите на картинку ниже, чтобы увидеть мои выводы

полное изображение: http://i62.tinypic.com/25a57p1.png

Когда MultipleActiveResultSets=True; удаляется из строки подключения, я получаю этот результат

полное изображение: http://i58.tinypic.com/2useaom.png

Я получаю успешное соединение.

Причина для MultipleActiveResultSets в том, что я использую 2 MySqlDataReader одновременно. Однако это нельзя изменить.

Если кто-нибудь знает, почему это не работает, пожалуйста, предложите свое решение.

Версия моего локального сервера MySQL: 5.6.17


person Ren    schedule 20.09.2014    source источник
comment
Поместите строку, где вы создаете соединение, внутри блока try. Вот где он, кажется, падает, поэтому вы хотите поймать исключение, которое выдает. Это, вероятно, скажет вам, что не так.   -  person AVee    schedule 21.09.2014


Ответы (3)


Я предполагаю, что соединитель MySql не поддерживает MARS (несколько активных наборов результатов). В таком случае вы не можете использовать его более чем в одном месте одновременно.

person Pritam    schedule 09.12.2014
comment
Я только что провел последнюю неделю, изучая проводной протокол MySQL, и я могу подтвердить, что это правильно; у MySQL не было бы возможности поддерживать несколько активных наборов результатов. Вам нужно либо буферизовать свои данные в список, а затем выполнить другой запрос или открыть второе соединение. - person Steve Rukuts; 12.12.2015
comment
mars недоступен в MySQL Я нашел подтверждение на форуме MySql forums.mysql.com /read.php?38,65931,260092 - person Cleiton Tortato; 03.04.2020

Проблема не решена, но я нашел обходной путь.

Я удалил MultipleActiveResultSets=True; из строки подключения. Затем я создал список, в котором я сохранил данные из MySqlDataReader, затем закрыл читатель и снова открыл новый, который затем получил остальные данные из базы данных. Затем просто объединили результаты вместе в списке.

Так что да, временное исправление.

Если кто-то знает правильное исправление, пожалуйста, прокомментируйте, иначе я буду использовать свое временное исправление.

Спасибо, парни.

person Ren    schedule 20.09.2014

Еще один вариант, который может привести к небольшому снижению производительности, но может быть использован в качестве быстрого исправления, — открыть еще одно соединение с базой данных для второго считывателя и закрыть его, когда вы закончите.

person Little Coder    schedule 05.10.2017