[CDBI] Class::DBI opens database connection for each object?
Josh Tanski <[email protected]> Fri, 11 Apr 2008 13:19:03 -0400
| Newsgroups | gmane.comp.lang.perl.modules.class-dbi |
|---|---|
| Message-ID | <[email protected]> |
Hello,
I have some classes setup as below - there are more classes similar to
Readings that inherit from LoggerDB I've snipped to save space.
My script parses text files from a third party logging system to add
them to the database - I'm trying out Class::DBI to save myself from
having to write alot of basic CRUD SQL. There's thousands of records in
the log files and a reading object is created for each record - what
happens is it dies with the following error after it creates roughly 950
db records. Netstat shows I have about that many tcp connections in
TIME_WAIT, so my guess is I'm hitting a tcp socket limit.
DBI connect('dbname=dbname;host=localhost;port=5555','username',...)
failed:
Couldn't connect to localhost:5555/tcp: IO::Socket::INET: connect:
Unknown error
at C:/Perl/site/lib/DBD/PgPP.pm line 124
at C:/Perl/site/lib/Ima/DBI.pm line 328
My question is what am I doing wrong - shouldn't there only be one
database connection open and all db access going through that connection?
I'm running ActivePerl from the Windows XP command line.
Thanks,
Josh
use strict;
use warnings;
use DBI;
package LoggerDB;
use base 'Class::DBI';
LoggerDB->connection('dbi:PgPP:dbname=dbname;host=localhost;port=5555',
'username', 'password');
package Reading;
use base 'LoggerDB';
Reading->table('readings');
Reading->columns(Primary => qw/reading_timestamp reading_name/);
Reading->columns(Others => qw/reading_value/);