The following implementation of hook_field_collection_is_empty_alter breaks when creating a new user that has a field collection item attached to it and 'number of values' is set to 1. It appears to work flawlessly when editing a user. It also is not a problem with nodes.

To duplicate:

  • Add a field collection with some fields and attache to a user
  • Set 'number of values' to 1
  • Implement hook_field_collection_is_empty_alter (seen below)
  • Create user
function mymodule_field_collection_is_empty_alter(&$is_empty, $item){
  if($item->field_name == 'field_content_notification'){
    $is_empty = TRUE;  //super generic just for testing
  }
}
ERROR:
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'field_content_notification_revision_id' cannot be null: INSERT INTO {field_data_field_content_notification} (entity_type, entity_id, revision_id, bundle, delta, language, field_content_notification_value, field_content_notification_revision_id) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => user [:db_insert_placeholder_1] => 29781 [:db_insert_placeholder_2] => 29781 [:db_insert_placeholder_3] => user [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => und [:db_insert_placeholder_6] => [:db_insert_placeholder_7] => ) in field_sql_storage_field_storage_write() (line 448 of /Users/reuben/Sites/go2hr/public_html/modules/field/modules/field_sql_storage/field_sql_storage.module).