diff --git modules/node/node.install modules/node/node.install
index 4be27cb..f8b0d3a 100644
--- modules/node/node.install
+++ modules/node/node.install
@@ -446,6 +446,56 @@ function _update_7000_node_get_types() {
 }
 
 /**
+ * Helper function to create {node_type} records where modules have been
+ * disabled while content is in the database.
+ */
+function node_update_recreate_node_types() {
+  $enabled_types = db_query('SELECT * FROM {node_type}')->fetchAllAssoc('type', PDO::FETCH_OBJ);
+  $all_types = db_query('SELECT DISTINCT type FROM {node}')->fetchCol();
+  $missing_types = array_diff(array_keys($enabled_types), $all_types);
+  foreach ($missing_types as $type) {
+    // We don't have any information about the node type apart from the machine
+    // readable name, so just add the minimal properties to create a valid type.
+    $new_type = (object) array(
+     'type' => $type,
+      'name' => $type,
+      'description' => '',
+      'help' => '',
+      'custom' => 1,
+      'modified' => 1,
+      'locked' => 0,
+      'disabled' => 1,
+      'is_new' => 1, 
+      'has_title' => 1, 
+      'title_label' => st('Title'),
+      'module' => 'module',
+    );
+    $fields = array(
+      'type' => (string) $type->type, 
+      'name' => (string) $type->name, 
+      'base' => (string) $type->base, 
+      'has_title' => (int) $type->has_title, 
+      'title_label' => (string) $type->title_label, 
+      'description' => (string) $type->description, 
+      'help' => (string) $type->help, 
+      'custom' => (int) $type->custom, 
+      'modified' => (int) $type->modified, 
+      'locked' => (int) $type->locked, 
+      'disabled' => (int) $type->disabled, 
+      'module' => $type->module,
+    );
+    $fields['orig_type'] = (string) $type->orig_type;
+    db_insert('node_type')
+      ->fields($fields)
+      ->execute();
+  }
+  if ($missing_types) {
+    return t('The following orphaned node types from disabled modules were found in your database, new records have been created for them but they may require settings to be changed manually: @types', array('@types', implode(', ', $types)));
+  }
+}
+ 
+
+/**
  * @addtogroup updates-6.x-to-7.x
  * @{
  */
@@ -485,6 +535,8 @@ function node_update_7000() {
     ->fields(array('base' => 'node_content'))
     ->condition('base', 'node')
     ->execute();
+
+  return node_update_recreate_node_types();
 }
 
 /**
