? hook_field_update_forbid_doc.patch
? modules/field/hook_field_update_forbid_doc.patch
Index: modules/field/field.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.api.php,v
retrieving revision 1.71
diff -u -p -r1.71 field.api.php
--- modules/field/field.api.php	6 Apr 2010 16:49:12 -0000	1.71
+++ modules/field/field.api.php	20 Apr 2010 04:25:44 -0000
@@ -1666,3 +1666,20 @@ function hook_field_read_instance($insta
  */
 function hook_field_access($op, $field, $entity_type, $entity, $account) {
 }
+
+/**
+ * Allows a module to throw an Exception if they object to a 
+ * field definition update.
+ *
+ * @param $field
+ *   The updated field structure that is attempting to be saved.
+ * @param $prior_field
+ *   The field structure that is currently being used.
+ * @param $has_data
+ *   If the field has data in the storage
+ */
+function hook_field_update_forbid($field, $prior_field, $has_data) {
+  if ($has_data && $field['columns'] != $prior_field['columns']) {
+    throw new FieldUpdateForbiddenException("field_sql_storage cannot change the schema for an existing field with data.");
+  }
+}
