 includes/database/mysql/database.inc |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git includes/database/mysql/database.inc includes/database/mysql/database.inc
index 34ca069..a65fd9f 100644
--- includes/database/mysql/database.inc
+++ includes/database/mysql/database.inc
@@ -96,7 +96,9 @@ class DatabaseConnection_mysql extends DatabaseConnection {
       $new_id = $this->query('INSERT INTO {sequences} () VALUES ()', array(), array('return' => Database::RETURN_INSERT_ID));
     }
     if (!$this->shutdownRegistered) {
-      drupal_register_shutdown_function(array($this, 'nextIdDelete'));
+      // Use register_shutdown_function() here to keep the database system
+      // independent of Drupal.
+      register_shutdown_function(array($this, 'nextIdDelete'));
       $shutdownRegistered = TRUE;
     }
     return $new_id;
@@ -111,9 +113,19 @@ class DatabaseConnection_mysql extends DatabaseConnection {
     // table based solely on values from the table so deleting all values would
     // be a problem in this case. Also, TRUNCATE resets the auto increment
     // counter.
-    $max_id = $this->query('SELECT MAX(value) FROM {sequences}')->fetchField();
-    // We know we are using MySQL here, so need for the slower db_delete().
-    $this->query('DELETE FROM {sequences} WHERE value < :value', array(':value' => $max_id));
+    try {
+      $max_id = $this->query('SELECT MAX(value) FROM {sequences}')->fetchField();
+      // We know we are using MySQL here, so need for the slower db_delete().
+      $this->query('DELETE FROM {sequences} WHERE value < :value', array(':value' => $max_id));
+    }
+    // During testing, this function is called from shutdown with the
+    // simpletest prefix stored in $this->connection and those tables are gone
+    // by the time shutdown is called so we need to ignore the database
+    // errors. There is no problem with completely ignoring errors here: if
+    // these queries fail, the sequence will work just fine, just use a bit
+    // more database storage and memory.
+    catch (PDOException $e) {
+    }
   }
 }
 
