Я применяю cicindela2 рекомендованный движок
Используется Apache mod_perl
и модуль Perl DBI
.
Вот примерный пример того, как это работает
Ввод данных обработчиком записи
Данные передаются через цепочку фильтров для пакетной обработки
Временные таблицы выводятся из пакетной обработки
Результат рекомендации запрашивается путем доступа к Рекомендующему Обработчику, который запускает действие Рекомендатора
Я настроил агрегацию и запустил пакетный скрипт проекта. Я знаю, что пакетная обработка прошла успешно, потому что я увидел результаты обработки из БД. Но когда я попытался получить доступ к результату рекомендации с помощью URL, который запускает обработчик рекомендаций, я увидел пустую белую страницу и в журнале было написано
FATAL: небезопасная зависимость в параметре 1 DBIx :: ContextualFetch :: db = HASH (0x7f2a76169e78) -> вызов метода prepare_cached при запуске с ключом -T в строке /usr/local/share/perl5/Ima/DBI.pm 398.
Это где ошибка была выброшена из
Ima::DBI
базовый модуль
/ USR / местные / доли / perl5 / ИМА / DBI.pm.
sub _mk_sql_closure {
my ($class, $sql_name, $statement, $db_meth, $cache) = @_;
return sub {
my $class = shift;
my $dbh = $class->$db_meth();
# Everything must pass through sprintf, even if @_ is empty.
# This is to do proper '%%' translation.
my $sql = $class->transform_sql($statement => @_);
return $cache # Line 398
? $dbh->prepare_cached($sql)
: $dbh->prepare($sql);
};
}
Кажется, что подготовленный программой SQL-запрос небезопасен, верно?
В чем причина этой ошибки?
Это связано с функцией управления кешем DBI?
Будет ли это решено, если я регулярно очищаю кеш?
Кроме того, я попытался записать сгенерированный оператор SQL, но вывод не удался, даже если я поместил что-то вроде $LOGGER->warn("123")
в подпрограмму handle обработчика Recommended.
Почему журнал вышел из строя и как его правильно зарегистрировать?