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();
       }