Laravel SQL Chunk дает -902: Ошибка чтения данных из соединения

В настоящее время я запрашиваю огромную таблицу Firebird (v2.5) (с миллионами строк) для выполнения некоторых операций на уровне строк. Чтобы достичь этого, код использует чанкинг из Laravel 5.1, примерно так:

DB::connection('USER_DB')
->table($table->name)
->chunk(min(5000, floor(65500/count($table->fields))), function($data) {
// running code and saving
});

По какой-то причине я продолжаю получать следующую ошибку:

SQLSTATE [HY000]: общая ошибка: -902 Ошибка чтения данных из соединения.

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

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

При написании этого я перепроверил журнал Firebird и нашел следующую запись:

INET / inet_error: прочитайте errno = 10054

Насколько я понял, это не проблема Firebird, а ошибка сброса winsock, это правильно? Если так, как я мог предотвратить это во время запроса чанка? И как я могу проверить, если это проблема с Windows или брандмауэром?

Обновить я

Копаясь в firebird2.5.log на PHP-сервере, обнаружил следующие ошибки:

INET / inet_error: отправьте errno = 104

УДАЛЕННЫЙ ИНТЕРФЕЙС / gds__detach: неудачное отсоединение от базы данных.

0

Решение

Я нашел корень моей проблемы. Дело в том, что сервер сбрасывал соединение. Чтобы избежать этого, я добавил запрос «сердцебиение» для запуска каждые несколько минут. С помощью этой стратегии я смог предотвратить сброс соединения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]