Почему Apache жалуется, что моя mod_perl программа “разъединение делает недействительным 1 активный дескриптор оператора”?

Laravel не использует именованные заполнители, вы должны использовать ? для заполнителей и удалить имя из массива параметров.

Вот так:

->whereRaw('? BETWEEN `week_beginning_date` AND `week_end_date`', [DB::raw("({$subQuery->toSql()})"])
8
задан brian d foy 12 February 2009 в 17:22
поделиться

2 ответа

Необходимо звонить $statement->finish(); прежде $db_handle->disconnnect();.

Обычно Вы не должны звонить finish, если Вы не получаете все строки. Если Вы получаете все результаты в использовании цикла fetchrow_array, Вы не называете конец в конце, если Вы не прервали цикл.

Я не уверен, почему драйвер MySQL не заканчивает оператор после a fetchall_hashref. Руководство предполагает, что Ваш запрос мог бы прерываться из-за ошибки:

Если ошибка происходит, fetchall_hashref возвращает данные, выбранные к настоящему времени, который не может быть ни одним. Необходимо проверить, что $sth-> допускают ошибку впоследствии (или используйте атрибут RaiseError) обнаружить, являются ли данные полными или были усеченными из-за ошибки.

12
ответ дан 5 December 2019 в 11:27
поделиться

Это вызывается дескриптором, все еще являющимся активным. Обычно это должно закрыть себя, хотя, но Вы, кажется, не выбираете все данные из него. От perldoc на DBI:

Когда все данные были выбраны от оператора SELECT, драйвер должен автоматически назвать конец для Вас. Таким образом, Вы не должны обычно должны быть называть его явно кроме тех случаев, когда Вы знаете, что не выбрали все данные из дескриптора оператора. Наиболее распространенный пример - когда Вы только хотите выбрать одну строку, но в этом случае selectrow_* методы обычно лучше так или иначе. При добавлении вызовов для окончания после того, как каждый цикл выборки является частой ошибкой, не делайте этого, это может замаскировать подлинные проблемы как непойманные ошибки выборки.

3
ответ дан 5 December 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: