CGI::Session::Driver::postgresql и PostgreSQL

Всем привет.
Пытаюсь организовать на Perl'е сессии посредством модуля CGI::Session и, в частности, драйвера к нему CGI::Session::Driver::postgresql. Грубо говоря, причиной тому наличие триггеров, стабильности, бесплатности и прочих замечательных достоинств у PostgreSQL, которые делают его чуть ли не идеальной СУБД для реализации сессий.
Соответственно, пользуюсь следующим мануалом - CGI::Session::Driver::postgresql.
Создаю таблицу в соответственной БД:

CREATE TABLE sessions (
     id CHAR(32) NOT NULL PRIMARY KEY,
     a_session BYTEA NOT NULL
    );

Далее идёт этакий тестовый скрипт, который уже не совсем работает:
#!/usr/bin/perl
 
USE DBI;
 
$dbname = "module_sys";
$pg_host = "localhost";
$pg_username = "postgres";
$pg_password = "postgres";
 
$dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$pg_host", "$pg_username", "$pg_password", {PrintError => 0});
 
IF ($DBI::err !=0)
{
	print $DBI::errstr . "\n<br>";
	exit($DBI::err);
}
 
USE CGI::Session;
$session = CGI::Session->new("driver:postgresql", undef, {Handle=>$dbh, ColumnType=>"binary"});
$session->param('username', 'Vasya');
 
print "Content-type: text/html\n\n";
print "Hi, ".$session->param('username')."! Number of your session is ".$session->id."\n<br>";

Собственно говоря, скрипт радостно выводит:
Hi, Vasya! Number of your session is sid
Где sid - сгенерированный идентификатор сессии.
Но, не смотря на всё это, в таблице session не добавляется запись. Т.е. что-то не проходит. А вот что - понять мне пока что не удаётся.
SQL-запросы через DBI выполняются нормально, при использовании аналогичного кода, но с:
$session = CGI::Session->new("driver:file", undef, {Directory => "sessions"});
сессии работают, файлы в соответственной папке создаются и всё прекрасно за исключением того, что это не есть хорошая реализация сессий.
В общем говоря, сейчас меня терзают смутные сомнения - а не намутил ли я при установке самой СУБД?
Ну и спасибо за потраченное время на прочтение поста. В любом случае :)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Судя по тому что вы пишите,

Судя по тому что вы пишите, PostgreSQL здесь не при чём - проблема в реализации драйвера "driver:postgresql". Попробуйте колупнуть исходник, возможно поймёте в чём дело.
Попробуйте также проверить содержимое $DBI::errstr и $dbh->errstr после строчек:

$session = CGI::Session->new("driver:postgresql", undef, {Handle=>$dbh, ColumnType=>"binary"});

и

$session->param('username', 'Vasya');

Возможно увидите какие-либо ошибки

$DBI::errstr и $dbh->errstr

$DBI::errstr и $dbh->errstr пустые. Видимо, проблема в реализации драйвера. Попробую разобраться. Или же в крайнем случае напишу некий аналог.
Спасибо за помощь )

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023