perl and Yaffil

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Trender
Сообщения: 4
Зарегистрирован: 07 май 2008, 17:31

perl and Yaffil

Сообщение Trender » 07 май 2008, 17:37

Здравствуйте.
Возникла необходимость подключиться к БД yaffil из perl. Для этого используется DBI и DBD::Interbase.
perl -vperl -v

Код: Выделить всё

This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 25 registered patches, see perl -V for more detail)

Copyright 1987-2006, Larry Wall

Binary build 817 [257965] provided by ActiveState http://www.ActiveState.com
Built Mar 20 2006 17:54:25


При попытке компилировать DBD::InterBase 0.48 с установленным клиентом yaffil пишет makefile.pl

Код: Выделить всё

Cannot proceed. Aborting..
I cannot find your InterBase/Firebird installation.
DBD::InterBase cannot build or run without InterBase.


после установке из ppm пишет, чтоexecute

Код: Выделить всё

Can't load 'C:/Perl/site/lib/auto/DBD/InterBase/InterBase.dll' for module DBD::InterBase: load_file:Не найден указанный модуль at C:/Perl/lib/DynaLoader.pm line 230.
at C:\Perl\!My\DB\lan2net\perl.pl line 4
Compilation failed in require at C:\Perl\!My\DB\lan2net\perl.pl line 4.
BEGIN failed--compilation aborted at C:\Perl\!My\DB\lan2net\perl.pl line 4.

Проблема в общем случае такая, что нужно подключиться к базе данных другого приложения. Мне ответили что эта бд это yaffil. т.е. в каталоге проги лежит библиотека gds32.dll. Как к ней приконектиться?
С уважением Александр.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 07 май 2008, 19:01

тут вопрос в чем - у тебя yaffil или fb установлен? т.е. где ты "не можешь подключиться"? gds32.dll - это клиентская часть. через нее твой перл подключается к серверу.
если он не может gds найти - запускай processmonitor и смотри, где он ее ищет.

Trender
Сообщения: 4
Зарегистрирован: 07 май 2008, 17:31

Сообщение Trender » 08 май 2008, 09:13

kdv писал(а):тут вопрос в чем - у тебя yaffil или fb установлен?
Работаю под winxp.
установлен FB.
при попытке подключения, как я и писал пишет что

Код: Выделить всё

Can't load 'C:/Perl/site/lib/auto/DBD/InterBase/InterBase.dll' for module DBD::InterBase: load_file:Не найден указанный модуль at C:/Perl/lib/DynaLoader.pm line 230. 
at C:\Perl\!My\DB\lan2net\perl.pl line 4
даже не знаю что делать.
InterBase.dll лежит в нужном месте.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 08 май 2008, 12:51

даже не знаю что делать.
processmonitor.

Trender
Сообщения: 4
Зарегистрирован: 07 май 2008, 17:31

Сообщение Trender » 08 май 2008, 13:48

Чудеса.... начал ругаться что файло perl56.dll не найден.
буду пробовать еще раз ставить.
Скажите, а есть версия yaffil, с использованием которой можно компилировать DBD::Interbase?

makefile.pl по умолчанию ищет fb


при попытке компиляции пишет
[злобный модератор портянку удалил]

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 08 май 2008, 14:40

Скажите, а есть версия yaffil, с использованием которой можно компилировать DBD::Interbase?
бред какой-то. есть два варианта клиентов - gds32.dll и fbclient.dll. более того, у FB можно превратить fbclient.dll в gds32.dll.
Если ваш перл не или драйвер не в состоянии скомпилироваться без dll, то значит вы ему эту dll подсунуть не можете.
А как посмотреть где и что ищется, Я УЖЕ ОБЪЯСНИЛ.

дальнейшее продолжение топика без конструктива буду считать злостными нарушениями правил форума.

Trender
Сообщения: 4
Зарегистрирован: 07 май 2008, 17:31

Сообщение Trender » 08 май 2008, 15:42

прошу прощения не хотел флудить и злостно нарушать правила форума.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 08 май 2008, 17:23

дело не в правилах. просто Вы сюда какие-то логи кидаете, в которых никому не интересно разбираться.
Программа А грузит dll Б, которая грузит dll В. Почему Б не может загрузить В? Смотрите, что делает Б или А в ProcessMonitor.

anjey-aka-pm
Сообщения: 3
Зарегистрирован: 17 авг 2006, 21:23

Сообщение anjey-aka-pm » 15 май 2008, 10:25

Trender писал(а):
kdv писал(а):тут вопрос в чем - у тебя yaffil или fb установлен?
Работаю под winxp.
установлен FB.
при попытке подключения, как я и писал пишет что

Код: Выделить всё

Can't load 'C:/Perl/site/lib/auto/DBD/InterBase/InterBase.dll' for module DBD::InterBase: load_file:Не найден указанный модуль at C:/Perl/lib/DynaLoader.pm line 230. 
at C:\Perl\!My\DB\lan2net\perl.pl line 4
даже не знаю что делать.
InterBase.dll лежит в нужном месте.
DBD::Interbase если мне не изменяет память в сборке под ActivePerl ищет gds32 в system32 ну либо в месте расположения самой InterBase.dll (хотя это и так очевидно) и по другому пути задать если вы ставили DBD::Interbase через PPM вам не получится.

Но я бы вам не советовал пользовать связку перл+иб/фб/яфил особенно если вы работаете с BLOB. Т.к. не смотря на то что последняя сборка за февраль или январь сего года, в ней все еще, как и пару лет назад
Read/Write BLOB fields block by block not (yet) supported. The maximum size of a BLOB read/write is hardcoded to about 1 MB.
А учитывая реализацию самого DBD::Interbase на винде с тем же успехом можно работать и через ОДБЦ. Всеравно поддержка транзакций у ДБИ никакая :(

Развечто сами влезете руками в исходники модуля и добавите нужный функционал по крайней мере по части БЛОБ

Ответить