Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
Trender
- Сообщения: 4
- Зарегистрирован: 07 май 2008, 17:31
Сообщение
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 на винде с тем же успехом можно работать и через ОДБЦ. Всеравно поддержка транзакций у ДБИ никакая
Развечто сами влезете руками в исходники модуля и добавите нужный функционал по крайней мере по части БЛОБ