diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm index 3c252467bd048de23fd213c2aafff27b8df77fe5..eeb4cf24f0591b841a4540ce66478c567d9fece1 100644 --- a/modules/Bio/EnsEMBL/Registry.pm +++ b/modules/Bio/EnsEMBL/Registry.pm @@ -2463,17 +2463,24 @@ sub get_species_and_object_type { if ( lc($species) eq 'multi' ) { next } - if ( !defined($dbc) || $dbc->host() ne $dba->dbc()->host() ) { + if ( !defined($dbc) + || $dbc->host() ne $dba->dbc()->host() + || $dbc->dbname() ne $dba->dbc()->dbname() ) + { $dbc = $dba->dbc(); } my $dbh = $dbc->db_handle(); + my $dbname = $dbc->dbname(); + + my $statement = sprintf( + "SELECT meta_value " + . "FROM %s " + . "WHERE meta_key = 'species.stable_id_prefix' " + . "AND species_id = ?", + $dbh->quote_identifier( undef, $dbname, 'meta' ) + ); - my $statement = - "SELECT meta_value " - . "FROM meta " - . "WHERE meta_key = 'species.stable_id_prefix' " - . "AND species_id = ?"; my $sth = $dbh->prepare($statement); @@ -2593,7 +2600,10 @@ SECONDLOOP: '-species' => $species ) } ) { - if ( !defined($dbc) || $dbc->host() ne $dba->dbc()->host() ) { + if ( !defined($dbc) + || $dbc->host() ne $dba->dbc()->host() + || $dbc->dbname() ne $dba->dbc()->dbname() ) + { $dbc = $dba->dbc(); }