diff --git modules/field/field.install modules/field/field.install
index 11fe78d..31dd685 100644
--- modules/field/field.install
+++ modules/field/field.install
@@ -197,6 +197,17 @@ function _update_7000_field_create_field(&$field) {
     'active' => 1,
   );
 
+  // Fetch the field schema to initialize columns and indexes. The field module
+  // is not guaranteed to be loaded at this point.
+  module_load_install($field['module']);
+  $schema = (array) module_invoke($field['module'], 'field_schema', $field);
+  $schema += array('columns' => array(), 'indexes' => array());
+  // 'columns' are hardcoded in the field type.
+  $field['columns'] = $schema['columns'];
+  // 'indexes' can be both hardcoded in the field type, and specified in the
+  // incoming $field definition.
+  $field['indexes'] += $schema['indexes'];
+
   // The serialized 'data' column contains everything from $field that does not
   // have its own column and is not automatically populated when the field is
   // read.
@@ -226,17 +237,7 @@ function _update_7000_field_create_field(&$field) {
     ->fields($record)
     ->execute();
 
-  // Create storage for this field, the field module is not guaranteed to be
-  // loaded at this point.
-  module_load_install($field['module']);
-  $schema = (array) module_invoke($field['module'], 'field_schema', $field);
-  $schema += array('columns' => array(), 'indexes' => array());
-  // 'columns' are hardcoded in the field type.
-  $field['columns'] = $schema['columns'];
-  // 'indexes' can be both hardcoded in the field type, and specified in the
-  // incoming $field definition.
-  $field['indexes'] += $schema['indexes'];
-
+  // Create storage for the field.
   field_sql_storage_field_storage_create_field($field);
 }
 
diff --git modules/simpletest/tests/upgrade/upgrade.node.test modules/simpletest/tests/upgrade/upgrade.node.test
index d5d03b1..0d0a5a1 100644
--- modules/simpletest/tests/upgrade/upgrade.node.test
+++ modules/simpletest/tests/upgrade/upgrade.node.test
@@ -39,6 +39,10 @@ class NodeBodyUpgradePathTestCase extends UpgradePathTestCase {
     $revision = db_query_range("SELECT r.nid, r.vid FROM {node_revision} r JOIN {node} n ON n.nid = r.nid WHERE n.status = 0 AND n.type <> 'poll' AND n.vid <> r.vid", 0, 1)->fetch();
     $revision = node_load($revision->nid, $revision->vid);
     $this->assertTrue(!empty($revision->body), 'Unpublished non-current node revisions still have a node body.');
+
+    // Check that fields created during the upgrade can edited and resaved in
+    // the UI.
+    $this->drupalPost('admin/structure/types/manage/story/fields/body', array(), t('Save settings'));
   }
 }
 
