http://qs1969.pair.com?node_id=344260

esskar has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks!
sub session_create { my ($obj, $dbh, $userid) = @_; my $mydbh = $dbh; unless($mydbh) { $mydbh = &libyn::DB::connect_to_db($obj); } $CGI::Session::MySQL::TABLE_NAME = $libyn::Config::DbTables{sessions +}; my $session = CGI::Session->new("driver:MySQL", $obj->{-cgi}, { Han +dle => $mydbh }) or die "CGI::Session->new failed."; $session->name('sessionId'); $session->expire('+1h'); $session->param('userId', $userid); unless($dbh) { $mydbh->disconnect(); } return $session; }
I do not get an error but that database table does not get filled. The structure of the database table is
CREATE TABLE yn_sessions ( id varchar(32) NOT NULL default '', a_session text NOT NULL, userId bigint(20) default NULL, UNIQUE KEY id (id) ) TYPE=MyISAM;
The doc of CGI::Session says that id has to be of type CHAR; i did create the table using CHAR in the first place and i tried changing it to CHAR later but it ain't working...
Can that be the problem?

Replies are listed 'Best First'.
Re: CGI::Session and MySQL
by tilly (Archbishop) on Apr 11, 2004 at 19:55 UTC
    Not getting an error might be due to something as simple as the necessary functions not having error checks.

    Missing data might be as simple as your being configured to always use transactions, and nowhere do you commit your changes.

    Note that I say "might" in both cases. Without access to your environment I can only guess what is going wrong, but those guesses are at least things that you can investigate.