diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index c557def..7e4fdca 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -2997,6 +2997,10 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
  * Extends DrupalCacheArray to allow for dynamic building of the schema cache.
  */
 class SchemaCache extends DrupalCacheArray {
+  /**
+   * Whether the cache should be persisted.
+   */
+  protected $persistable;
 
   /**
    * Constructs a SchemaCache object.
@@ -3007,13 +3011,26 @@ class SchemaCache extends DrupalCacheArray {
   }
 
   /**
+   * Whether the cache should be persisted.
+   */
+  function persistable() {
+    // Do not persist if we've started without a full bootstrap.
+    if (!isset($this->persistable)) {
+      $this->persistable = drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL;
+    }
+    return $this->persistable;
+  }
+
+  /**
    * Overrides DrupalCacheArray::resolveCacheMiss().
    */
   protected function resolveCacheMiss($offset) {
     $complete_schema = drupal_get_complete_schema();
     $value = isset($complete_schema[$offset]) ? $complete_schema[$offset] :  NULL;
-    $this->storage[$offset] = $value;
-    $this->persist($offset);
+    if ($this->persistable() && !empty($complete_schema)) {
+      $this->storage[$offset] = $value;
+      $this->persist($offset);
+    }
     return $value;
   }
 }
