powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl + Firebird + DBD::ODBC
4 сообщений из 4, страница 1 из 1
Perl + Firebird + DBD::ODBC
    #37589420
Gangryong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Windows 7
Perl 5.14
Firebird 2.1.3 установлен на сервере, база данных лежит там же

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#!/usr/bin/perl -w
use DBI;
use DBD::ODBC;
my($driver) = "Firebird/InterBase(r) driver"; # имя ODBC драйвера, скачан с официального сайта Firebird
my($server) = "ab"; # имя сервера
my($user) = "sysdba"; # логин
my($password) = "masterkey"; # пароль
my($database) = 'g:\np_g\ab20.gdb'; # путь к базе данных (ЗДЕСЬ ОШИБКА)
my($connexion) = "ODBC";
my(%DSN) =
(
    ODBC => {
        dsn => "Driver={$driver};Server=$server;Database=$database;uid=$user;pwd=$password;",
        heading => 'Using ODBC Driver Manager via DBI::ODBC',
        mode => 'ODBC',
    }
);
my($connect) = "dbi:$DSN{$connexion}{'mode'}(RaiseError=>0, PrintError=>0, Taint=>0):$DSN{$connexion}{'dsn'}";
my($dbh) = DBI->connect($connect, { PrintError => 0, AutoCommit => 0 }) || die("Can't connect: $DBI::errstr")



Can't connect: [ODBC Firebird Driver]File Database is not found (SQL-08004) [state was 08004 now 01S00]
[ODBC Firebird Driver]Invalid connection string attribute (SQL-01S00) at D:\Sendbox\perl\DB\firebird.pl line N.

Как правильно указать путь к базе данных?
...
Рейтинг: 0 / 0
Perl + Firebird + DBD::ODBC
    #37589436
Gangryong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В целом задача проста, подключится к БД Firebird. Однако под Perl, как оказалось, сделать это не так то просто.
Стандартных модулей под Windows нет (есть только забракованный DBD::Firebird и устаревший DBD::Interbase, однако их нужно собирать под винду самому)! Остается вариант через DBD::ODBC.
...
Рейтинг: 0 / 0
Perl + Firebird + DBD::ODBC
    #37589721
Gangryong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел: В документации ODBC драйвера firebird имя базы предлагается указывать так:
DBNAME=server:c:\db.fdb
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Perl + Firebird + DBD::ODBC
    #39332783
Vargant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, помогло!

Только server можно не указывать, если мы на локальной машине, по крайне мере на 3 версии FB и официайльный драйвер ODBC v2.x отработало

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
	$dbh = DBI->connect(
		'dbi:ODBC:Driver=Firebird/InterBase(r) driver;dbname=d:\firebird\data\example.fdb;charset=utf8;',
		$cfg->{'database'}->{'username'},
		$cfg->{'database'}->{'password'}, {
			PrintError => 0, 
			RaiseError => 1, 
			AutoCommit => 0 
		}
	);
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl + Firebird + DBD::ODBC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]