diff --git a/panels.install b/panels.install
index b913012ab645d1be40e2176f516844910822e6b6..196afd10675f46443751fd2b838df45aea04a0ec 100644
--- a/panels.install
+++ b/panels.install
@@ -47,7 +47,15 @@ function panels_requirements_install() {
 function panels_schema() {
   // This should always point to our 'current' schema. This makes it relatively easy
   // to keep a record of schema as we make changes to it.
-  return panels_schema_5();
+  return panels_schema_6();
+}
+
+function panels_schema_6() {
+  $schema = panels_schema_5();
+
+  $schema['cache_panels'] = drupal_get_schema_unprocessed('system', 'cache');
+
+  return $schema;
 }
 
 function panels_schema_5() {
@@ -351,8 +359,6 @@ function panels_schema_3() {
     'primary key' => array('lid'),
   );
 
-  $schema['cache_panels'] = drupal_get_schema_unprocessed('system', 'cache');
-
   return $schema;
 }
 
@@ -402,6 +408,9 @@ function panels_update_7301() {
  * Adding universally unique identifiers to panels.
  */
 function panels_update_7302() {
+  if (!module_load_include('inc', 'ctools', 'includes/uuid')) {
+    throw new DrupalUpdateException(t('Ctools UUID support not detected. You must update to a more recent version of the ctools module.'));
+  }
   // Load the schema.
   $schema = panels_schema_5();
   $msg = array();
@@ -471,9 +480,10 @@ function panels_update_7302() {
  * Add a custom cache table for Panels.
  */
 function panels_update_7303() {
+  $schema = panels_schema_6();
+
   $table_name = 'cache_panels';
   if (!db_table_exists($table_name)) {
-    $schema = drupal_get_schema_unprocessed('system', 'cache');
-    db_create_table($table_name, $schema);
+    db_create_table($table_name, $schema[$table_name]);
   }
 }
