Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два вопроса по связке Perl+interbase, Dbd::Interbase установка и использование 
:(
    Опции темы
NoraS
Дата 9.8.2015, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



Здравствуйте, возникли следующие вопросы/проблемы по указанному в описании модулю:
1. Не устанавливается драйвер DBD::Interbase под strawberry Perl, выдаются следующие ошибки:
а)не найден interbase/fireberd сервер (O_O)
Unpacking DBD-InterBase-0.48.tar.gz
Entering DBD-InterBase-0.48
Checking configure dependencies from META.yml
Configuring DBD-InterBase-0.48
Running Makefile.PL
Cannot proceed. Aborting..
I cannot find your InterBase/Firebird installation.
DBD::InterBase cannot build or run without InterBase.
 at Makefile.PL line 311
-> N/A
-> FAIL Configure failed for DBD-InterBase-0.48. See C:\.cpanm\work\1439134073.2304\build.log for details.
После установки сервера:
б) не найден borland C++

win 2003, perl 5.14, DBD::interbase 0,48, dbi 1.616
Можно заставить модуль встать ?

2. Поделитесь работоспособным примером работы связки Perl+Interbase, не хватает визуального сопровождения изученной документации
PM MAIL   Вверх
arto
Дата 10.8.2015, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



1.а нужны библиотеки для драйвера, они идут с сервером
   б для компиляции нужен компилятор. поставте его
   либо попробуйте найти DBD::InterBase под strawberry perl для вашей архитектуре

2. perldoc DBI, там и смотреть примеры. Interbase-специфик примеры смотреть в DBD::InterBase
 
PM MAIL ICQ   Вверх
NoraS
Дата 17.8.2015, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



Цитата(arto @ 10.8.2015,  12:35)
1.а нужны библиотеки для драйвера, они идут с сервером
   б для компиляции нужен компилятор. поставте его
   либо попробуйте найти DBD::InterBase под strawberry perl для вашей архитектуре

2. perldoc DBI, там и смотреть примеры. Interbase-специфик примеры смотреть в DBD::InterBase

Выбрала путь компиляции модуля.
Выдается ошибка:
Full path to your test database:   

Full path to your test database:  [] 

Full path to your test database:  [] 
Must specify a test database at Makefile.PL line 165.
Возникает в makefile.pl
при попытке подключиться либо создать тестовую базу данных
Код

################################################################################
# sub make_test_conf - configure for test (save to ./t/test.conf)
# Parameters: <none>
# Return value: <none>
################################################################################
sub make_test_conf
{
    my $test_conf = './t/test.conf';
    my ($dsn, $user, $pass, $path, $db, $host);

    # read cached config if available
    if (-r $test_conf)
    {
        print "\nReading cached test configuration...";
        open F, $test_conf or die "Can't open $test_conf: $!";
        local @ARGV = ($test_conf);
        ($dsn, $user, $pass) = map {chomp;$_} <>;
        ($db) = $dsn =~ /(?:db|database)=([^;]+);/;
        ($host) = $dsn =~ /(?:host|hostname)=([^;]+);/;
        $path = ($host ? "$host:" : '') . $db;
        close F;
    }

    # ask for database path
    DBPATH: {
        for (1..3) {
            last if $path = prompt("\nFull path to your test database: ", $path);
        }
        die "Must specify a test database" unless $path;

        ($db, $host) = reverse split /:/, $path;

        # no longer necessary
        #PFW - isql on windows doesn't seem to work without the localhost in the db path
        #my $hostpath = $path;
        #if ($path =~ /^localhost:(.+)/) {
        #    $hostpath = $1;
        #}

        # if DB doesn't exist ask for creation
        if ((!$host || $host =~ /localhost/) && !-f $db or
            $host && $host !~ /localhost/)
        {
            print <<"EOM";
$path does not exist.
Trying to create the test database..
Please enter a username with CREATE DATABASE permission.
EOM
            $user = prompt("Username :", $user);
            $pass = prompt("Password :", $pass);
            create_test_db($path, $user, $pass);
            last DBPATH;
        }
        else
        {
            print <<"EOM";
$db exists.
Trying to use an existing database..
Please enter a username to connect.
EOM
            $user = prompt("Username :", $user);
            $pass = prompt("Password :", $pass);

            # check dialect
            my $dialect;
            my $gstat = $IB_Bin_path . "/" . test_files($IB_Bin_path, [qw(gstat gstat.exe)]);
            local *GSTAT;
            open GSTAT, "$gstat -user $user -password $pass -h $path |" or die "Can't execute $gstat: $!";
            while (<GSTAT>) { ($dialect) = $_ =~ /dialect\s+(\d)/i and last }

            unless (defined $dialect) {
                print <<"EOM";

Dialect of $path is UNKNOWN.
This test requires a database of dialect 3. You may specify a non-existent database to create a new one.
EOM
                my $is_proceed = prompt("Proceed anyway or create a NEW test database (P/N)?", "P");
                last DBPATH if $is_proceed =~ /P/i;
                $path = undef, goto DBPATH;
            }
            unless ($dialect == 3) {
                print <<"EOM";
The dialect of $path is: $dialect !!.
This test requires a database of dialect 3. Please specify a non-existent database to create a new one.
EOM
                $path = undef, goto DBPATH;
            }
        }
    }

    # save test config to file
    open F, ">$test_conf" or die "Can't write $test_conf: $!";
    print F 'dbi:InterBase:' . ($host ? "host=$host;" : '') . "db=$db;ib_dialect=3;ib_charset=ISO8859_1\n$user\n$pass\n";
    close F;
}

################################################################################
# sub create_test_db - Creates the test database
# Parameters:
#  0: path to testdatabase to be created
#  1: username used to connect to the DB
#  2: password
# Return value: <none>
################################################################################
sub create_test_db
{
    my ($path, $user, $pass) = @_;

    # create the SQL file with CREATE statement
    open(T, ">./t/create.sql") or die "Can't write to t/create.sql";
    while(<DATA>)
    {
        s/__TESTDB__/$path/;
        s/__USER__/$user/;
        s/__PASS__/$pass/;
        print T;
    }
    close T;

    # try to find isql
    my $isql;
    if (-x "$IB_Bin_path/$isql_name") { 
        $isql = "$IB_Bin_path/$isql_name"; 
    } else {
        for (split /:/, $ENV{PATH})
        {
            s#/+$##g;
            if (-x "$_/$isql_name") {
                $isql = "$_/$isql_name"; last; 
            }
        }
    }

    EXEC:
    {
        for (1..3)
        {
            $isql = prompt("Enter full path to isql: ", $isql);
            last EXEC if (-x $isql);
        }
        die "Unable to execute isql. Aborting..";
    }

    #PFW - isql on windows doesn't seem to work without the localhost in the db path
    my $hostpath = $path;
    if ($path =~ /^localhost:(.+)/) {
        $hostpath = $1;
    }
    # if test db directory doesn't exist -> try to create
    my $dir = dirname $hostpath;
    unless (-d $dir)
    {
        print "Can't find $dir. Trying to mkdir..\n";
        system('mkdir', '-p', $dir) == 0
        or die "Can't mkdir -p $dir";
    }

    # try to execute isql and create the test database
    system($isql, '-sql_dialect', 3, '-i', './t/create.sql') == 0
    or die "Fail calling $isql -i t/create/sql: $?";
}


Не могу сообразить как прописать путь к существующей тестовой БД и параметры подключения.
PM MAIL   Вверх
arto
Дата 17.8.2015, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc InterBase.pm:

$dsn = "dbi:InterBase:db=C:/temp/test.gdb;host=rae.cumi.org;ib_dialect=3";
PM MAIL ICQ   Вверх
NoraS
Дата 28.8.2015, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



решение стало возможным только через Dbd::ODBC.
для strawberryperl DBD::InterBase не компилируются :-(


PM MAIL   Вверх
tishaishii
Дата 12.9.2018, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Плохое решение. Когда-то, лет 10 назад, маялся с поддержкой ODBC + Firebird для mod_perl v1 и v2. Работало нестабильно под Win2000.
Перевёл сервер на Linux(что было - не помню), стал использовать DBD::Sybase, - всё заработало без сбоев.

Сейчас mod_perl ни кому не нужен, конечно. Plack, Starman или вроде.

Это сообщение отредактировал(а) tishaishii - 12.9.2018, 20:56
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
2 Пользователей читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1311 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.