Пул соединений не смог подключиться к потоку

Я использую GreenDAO для обработки баз данных в Android. При выполнении многих изменений базы данных (> 15.000) я получаю эту ошибку Сообщение:

Пул соединений для базы данных '/ data / data / …' не смог предоставить соединение с потоком 312 (Thread-312) с флагами 0x1 в течение 30.000002 секунд.

Все застревает. Почему эта ошибка происходит?

Solutions Collecting From Web of "Пул соединений не смог подключиться к потоку"

Я не могу сказать точно об этой конкретной реализации, но есть соединение, обычно поддерживающее ORM. Пул соединений открывает определенное количество подключений к базе данных и перерабатывает их по мере их закрытия и открывает новые соединения. Эта ошибка говорит вам, что она, вероятно, превзошла предел. Это может произойти по целому ряду причин: один из них состоит в том, что, возможно, в БД есть какой-то тупик, потому что вы обновляете две таблицы, а две разные транзакции содержат разные таблицы, ожидающие выхода другого. Или просто, что существует слишком много открытых подключений, и пул DB или пулов просто запутывается.

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

Я получил это сообщение, когда хочу выбрать запрос в таблице, который используется для транзакции без завершенной транзакции раньше. Проблема решена при выполнении endTransaction() блоке транзакции.

Я получил это сообщение при создании слишком большого количества соединений с SQLite через DBFlow FlowQueryList. Мое решение состояло в том, чтобы убедиться, что как только вы закончили с списком запросов для вызова endTransactionAndNotify() а затем close() в списке запросов.

Вызов endTransactionAndNotify() не endTransactionAndNotify() . Надеюсь, это поможет, эта тема, конечно, помогла мне.