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'
});