diff --git a/src/Storage/ResponseDataStorage.php b/src/Storage/ResponseDataStorage.php
index be05b11..ae234bb 100644
--- a/src/Storage/ResponseDataStorage.php
+++ b/src/Storage/ResponseDataStorage.php
@@ -79,6 +79,19 @@ class ResponseDataStorage {
 
     $fields = array_intersect_key($save_data + $defaults, $defaults);
 
+    // remove non-nullable fields that are set null, thus allowing the storage
+    // to write its default value.
+    $schema = drupal_get_module_schema('mollom', 'mollom');
+    $not_null_fields = array_filter($schema['fields'], function($col) {
+      return !empty($col['not null']);
+    });
+
+    foreach($not_null_fields as $not_null_field => $properties) {
+      if(array_key_exists($not_null_field, $fields) && $fields[$not_null_field] === null) {
+        unset ($fields[$not_null_field]);
+      }
+    }
+
     $result = \Drupal::database()->merge('mollom')
       ->key(array('id' => $data->id))
       ->fields($fields)
@@ -222,4 +235,4 @@ class ResponseDataStorage {
     }
     return (object) $clone;
   }
-} 
+}
