|
[Знаю как] DBD::Pg@win32 |
![]() |
||||||||||||||||||||||
СодержаниеActivePerlДля программирования на языке Perl под Windows (платформой win32) существует пакет ActivePerl созданный компанией ActiveState. Этот пакет содержит почти все необходимое для разработки приложений на Perl, почти - это значит не все. Большинство общеупотребимых модулей языка присутствуют, некоторые заменены на функциональные аналоги, которые в большинстве случаев удовлетворяют предъявляемым требованиям, но порой нет. DBD::PgВ штатной поставке ActivePerl отсутствует DBI драйвер DBD::Pg необходимый для доступа к SQL серверу баз данных PostgreSQL. Вместо него предлагается пакет драйвера DBD::PgPP, который годится, разве что, на поиграться поскольку, во-первых, имеет производительность оставляющую желать лучшего, во-вторых, испытывает серьезные проблемы при обработке действительно больших запросов. Обычная диагностика в таком случае в журнале Apache имеет вид: [Mon Mar 09 20:28:37 2009] [error] [client 127.0.0.1] Complex regular subexpression recursion limit (32766) exceeded at C:/Perl/site/lib/DBD/PgPP.pm line 750., referer: http://vap.org.ru.lan/cgi-bin/pb_cc.pl Решением проблемы является переход к использованию штатного для DBI модуля DBI::Pg, порт которого под платформу win32 на самом деле существует, хотя и не включен в поставку ActivePerl. Все необходимое можно скачать с сайта: http://pgfoundry.org/projects/dbdpgppm/ Минимум, что оттуда нужно забрать - установочный файл пакета ActivePerl подходящий для вашей установки, например, DBD-Pg-2.10.0-Perl5.10.ppd годится для установки ActivePerl версии 5.10. Важно, если вы собираетесь осуществлять доступ к PostgreSQL серверу расположенному где-то в сетях публичного доступа, иными словами - не на вашем локальном ПК, то обязательно используйте для доступа DBD драйвер с поддержкой SSL, например, DBD-Pg-2.10.0-SSL-Perl5.10.ppd. Разумеется вам нужно будет явно активировать защищенное соединение в вашем коде. Установка выполняется простой командой: "ppm install <имя_файла.ppd>". Например: ppm install DBD-Pg-2.10.0-Perl5.10.ppd После этого все, по идее, должно работать, но могут быть исключения. win32 порт DBD::Pg для своей работы требует наличия библиотеки времени исполнения Microsoft Visual C/C++ 8.0, поэтому вам может потребоваться загрузить файл msvcr80.zip с того же сайта, и если вы решили прибегнуть к DBD::Pg с поддержкой SSL, то в дополнение вам понадобится архив openssl.zip. Содержимое обеих архивов нужно распаковать в системный каталог Windows, обычно это C:\Windows\system32.
Однако, и на этом эпопея может не закончится. Вы можете получить при запуске диалоговое окно с сообщением об ошибке подобное приведенному здесь. Исправляется эта проблема следующим образом. Необходимо из каталога, где у вас установлен DBD::Pg, обычно это C:\Perl\site\lib\auto\DBD\Pg, взять файл Pg.dll.manifest и скопировать его в каталог исполняемых модулей Perl, обычно это C:\Perl\bin, переименовав в perl.exe.manifest. N.B. год спустяПроделал все эти "телодвижения" год спустя и выяснил, что, судя по всему, все перечисленные выше операции являются не возможными, но необходимыми. То есть, перечень необходимых действий после установки DBD-Pg-2.10.0-(SSL-)Perl5.10.ppd должен быть:
|
|
||||||||||||||||||||||
|
|
|||||||||||||||||||||||