Apache::DBI->connect_on_init соединение с базой данных не используется

У меня есть мод Perl 2 код, который делает Apache::DBI->connect_on_init($dsn, $user, $passwd); в скрипте, загруженном PerlRequire.

Но при обработке запроса делаем DBI->connect_cached($dsn, $user, $passwd) создает дополнительное соединение, не используя то, что создано в дочернем init. (DBI используется вместо Apache::DBI, потому что этот код также используется в не-Apache контекстах.)

Как сделать так, чтобы оно использовало уже кэшированное соединение?

1 ответ

Решение

Настройка $Apache::DBI::DEBUG=2 показывает, что соединение, созданное DBI, имеет дополнительный набор атрибутов; добавление этого атрибута в вызов connect_on_init позволяет повторно использовать кэшированное соединение:

Apache::DBI->connect_on_init($dsn, $user, $passwd, {
    dbi_connect_method => 'Apache::DBI::connect'
});
Другие вопросы по тегам