Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: can't manage to use BerkeleyDB::Env

by grondilu (Pilgrim)
on Aug 23, 2012 at 10:34 UTC ( #989268=note: print w/ replies, xml ) Need Help??


in reply to Re: can't manage to use BerkeleyDB::Env
in thread can't manage to use BerkeleyDB::Env

Ok. Well, to tell the whole story I only used DB_File in this simple example.

The thing is that I already have a db which I know has an environnement in it (I've already opened it with an other perl program). What I wanted to do was to retrieve some data from its Env, so I wanted to explore a bit the structure of an BerkeleyDB::Env class.

So I tried to create a "detached" env:

use BerkeleyDB; my $env = new BerkeleyDB::Env -Home => "/tmp" or die "could not create env";

And then I do raise the "could not create" exception.

Shouldn't it be possible to create a brand new environnement, detached from any database?


Comment on Re^2: can't manage to use BerkeleyDB::Env
Download Code
Replies are listed 'Best First'.
Re^3: can't manage to use BerkeleyDB::Env
by Anonymous Monk on Aug 23, 2012 at 10:45 UTC
    Well, according to the docs, it is, provided you follow the docs (use flags)
    #!/usr/bin/perl -- use strict; use warnings; use Data::Dump; use BerkeleyDB; for my $opts ( [], [-Flags => DB_CREATE| DB_INIT_CDB | DB_INIT_MPOOL] + ){ my $env = BerkeleyDB::Env->new( -Home => './home', @$opts, ) or warn "cannot open environment: $BerkeleyDB::Error\n"; dd $env, [ glob './home/*' ]; } __END__

    On first run it doesn't exist, so first try, without flags, fails -- you need flags to initialize

    $ perl berkeleydb.env.pl cannot open environment: No such file or directory (undef, []) ( bless([12346044], "BerkeleyDB::Env"), [ "./home/__db.001", "./home/__db.002", "./home/__db.003", "./home/__db.004", ], )

    On second run both tries work, because its already initialized

    $ perl berkeleydb.env.pl ( bless([10087228], "BerkeleyDB::Env"), [ "./home/__db.001", "./home/__db.002", "./home/__db.003", "./home/__db.004", ], ) ( bless([12336228], "BerkeleyDB::Env"), [ "./home/__db.001", "./home/__db.002", "./home/__db.003", "./home/__db.004", ], )

      Ok, thanks.

      I was mis-leaded by the following statement in the BerkeleyDB man page:

      All the parameters to the BerkeleyDB::Env constructor are optional.

      Well, not so true then.

        Well, not so true then.

        :) Well sure its true :) its just that success isn't guaranteed -- its like open, even filename is optional, but it doesn't mean you'll open a file

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://989268]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2015-07-08 03:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls