diff --git a/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm
index ffaa7e2924634fca787af4c7486c5944cb5d2644..1f1fe0e536b2d48e1b2b3a3438a5a657161b08d2 100755
--- a/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm
@@ -178,7 +178,7 @@ sub clear_caches {
   my ($self) = @_;
   my $adaptors = Bio::EnsEMBL::Registry->get_all_adaptors(
     $self->species(), $self->group());
-  while (my $adaptor = shift @{$adaptors}) {
+  foreach my $adaptor (@{$adaptors}) {
     if($adaptor->can('clear_cache')) {
       $adaptor->clear_cache();
     }