[Bioperl-l] Bio::DB::BioDB - insert failed. Dupllicate entry '' for key 2?
Chris Fields
cjfields at uiuc.edu
Sun Mar 5 04:10:44 UTC 2006
Sorry if I'm a bit off (pub you know) but have you tried the bioperl-
db script load_seqdatabase.pl (scripts dir)? Have you loaded taxonomy?
Chris
On Mar 4, 2006, at 5:52 PM, Jay Hannah wrote:
> Greetings --
>
> I'm trying to load my bioperl-db database (mySQL on Linux). I seem
> to be able to load 1 sequence at a time, but whenever I try to load
> the 2nd sequence, if fails with the output below...
>
>
> Here's my script:
> ---------------------------------------
> #!/usr/bin/perl
>
> use strict;
> use Bio::SeqIO;
> use Bio::DB::BioDB;
>
> my $db = Bio::DB::BioDB->new(
> -database => "biosql",
> -host => 'localhost',
> -port => 3306,
> -dbname => 'VIRUS',
> -driver => 'mysql',
> -user => 'dbastola',
> -pass => '-----------',
> );
>
> my $file = "/home/dbastola/genbankSequences/GBVRL/gbvrl_2006_Jan/
> GB_Sequences/gbvrl1.seq";
> my $infile = Bio::SeqIO->new(-file => $file, -format => 'GenBank');
>
> my $seq = $infile->next_seq();
> my $species = $seq->species;
> print join " | ", $species->classification;
> print "\n";
>
> my $pseq = $db->create_persistent($seq);
> $pseq->create() or die "create failed";
> $pseq->commit;
> exit;
> ------------------------------------
>
>
> Output:
>
> $ perl j2.pl
> Human adenovirus type 15 | Mastadenovirus | Adenoviridae | dsDNA
> viruses, no RNA stage | Viruses
>
> -------------------- WARNING ---------------------
> MSG: insert in Bio::DB::BioSQL::BioNamespaceAdaptor (driver)
> failed, values were ("","") FKs ()
> Duplicate entry '' for key 2
> ---------------------------------------------------
>
> ------------- EXCEPTION -------------
> MSG: create: object (Bio::DB::Persistent::BioNamespace) failed to
> insert or to be found by unique key
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create /usr/lib/
> perl5/site_perl/5.8.3/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:208
> STACK Bio::DB::Persistent::PersistentObject::create /usr/lib/perl5/
> site_perl/5.8.3/Bio/DB/Persistent/PersistentObject.pm:245
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create /usr/lib/
> perl5/site_perl/5.8.3/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:171
> STACK Bio::DB::Persistent::PersistentObject::create /usr/lib/perl5/
> site_perl/5.8.3/Bio/DB/Persistent/PersistentObject.pm:245
> STACK toplevel j2.pl:26
>
> --------------------------------------
>
>
> At this point I can see my first sequence loaded into mySQL.
> biodatabase and biosequence have stuff in them. e.g.:
>
>
> mysql> select * from biodatabase;
> +----------------+------+-----------+-------------+
> | biodatabase_id | name | authority | description |
> +----------------+------+-----------+-------------+
> | 23 | | NULL | NULL |
> +----------------+------+-----------+-------------+
> 1 row in set (0.00 sec)
>
>
>
> And I noticed that if I delete that sequence from the database, I
> can once again load it, and the number biodatabase_id (23)
> increments. 20, 21, 22, 23, etc.
>
> I'm trying to end up with a loop something like this:
>
> while (my $seq = $infile->next_seq()) {
> print " " . $seq->display_id . "\n";
> my $adp = $db->get_object_adaptor($seq);
> my $lseq = $adp->find_by_unique_key($seq);
> if ($lseq) {
> print "Already loaded! Deleting.\n";
> print " Primary key: " . $lseq->primary_key . "\n";
> $lseq->remove;
> $lseq->commit;
> }
> print "Loading...\n";
> my $pseq = $db->create_persistent($seq);
> $pseq->create or die "create failed";
> $pseq->commit or die "commit failed";
> $adp->commit; # ???
> }
>
> But I can't seem to get more than 1 to load. Ever.
>
> Is the bioperl-db code not reading/incrementing the biodatabase_id
> correctly? Am I skipping a step that makes that increment occur? Am
> I messing up the PK/FK somehow?
>
> phpMyAdmin says that the Next AutoIndex for the bioentry table is
> 24... So that's good?
>
> Thanks,
>
> j
> Omaha Perl Mongers
> http://omaha.pm.org
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
Christopher Fields
Postdoctoral Researcher
Lab of Dr. Robert Switzer
Dept of Biochemistry
University of Illinois Urbana-Champaign
More information about the Bioperl-l
mailing list