diff --git modules/comment/comment.module modules/comment/comment.module
index 6eb90cd..28e8d53 100644
--- modules/comment/comment.module
+++ modules/comment/comment.module
@@ -1366,6 +1366,8 @@ function comment_access($op, $comment) {
  *
  * @param $comment
  *   A comment object.
+ * @return
+ *  TRUE on success, or FALSE on failure.
  */
 function comment_save($comment) {
   global $user;
@@ -1509,8 +1511,10 @@ function comment_save($comment) {
   }
   catch (Exception $e) {
     $transaction->rollback('comment', $e->getMessage(), array(), WATCHDOG_ERROR);
+    return FALSE;
   }
 
+  return TRUE;
 }
 
 /**
@@ -2102,29 +2106,36 @@ function comment_form_submit($form, &$form_state) {
       user_cookie_save($form_state['values']);
     }
 
-    comment_save($comment);
-    $form_state['values']['cid'] = $comment->cid;
+    if (comment_save($comment)) {
+      $form_state['values']['cid'] = $comment->cid;
 
-    // Add an entry to the watchdog log.
-    watchdog('content', 'Comment posted: %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)));
+      // Add an entry to the watchdog log.
+      watchdog('content', 'Comment posted: %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)));
 
-    // Explain the approval queue if necessary.
-    if ($comment->status == COMMENT_NOT_PUBLISHED) {
-      if (!user_access('administer comments')) {
-        drupal_set_message(t('Your comment has been queued for review by site administrators and will be published after approval.'));
+      // Explain the approval queue if necessary.
+      if ($comment->status == COMMENT_NOT_PUBLISHED) {
+        if (!user_access('administer comments')) {
+          drupal_set_message(t('Your comment has been queued for review by site administrators and will be published after approval.'));
+        }
+      }
+      else {
+        drupal_set_message(t('Your comment has been posted.'));
+      }
+      $query = array();
+      // Find the current display page for this comment.
+      $page = comment_get_display_page($comment->cid, $node->type);
+      if ($page > 0) {
+        $query['page'] = $page;
       }
+      // Redirect to the newly posted comment.
+      $redirect = array('node/' . $node->nid, array('query' => $query, 'fragment' => 'comment-' . $comment->cid));
     }
     else {
-      drupal_set_message(t('Your comment has been posted.'));
+      watchdog('content', 'The comment could not be saved %subject.', array('%subject' => $comment->subject), WATCHDOG_ERROR);
+      drupal_set_message(t('The comment could not be saved %subject.', array('%subject' => $comment->subject)), 'error');
+      // Redirect the user to the node they are commenting on.
+      $redirect = 'node/' . $node->nid;
     }
-    $query = array();
-    // Find the current display page for this comment.
-    $page = comment_get_display_page($comment->cid, $node->type);
-    if ($page > 0) {
-      $query['page'] = $page;
-    }
-    // Redirect to the newly posted comment.
-    $redirect = array('node/' . $node->nid, array('query' => $query, 'fragment' => 'comment-' . $comment->cid));
   }
   else {
     watchdog('content', 'Comment: unauthorized comment submitted or comment submitted to a closed post %subject.', array('%subject' => $comment->subject), WATCHDOG_WARNING);
@@ -2506,9 +2517,13 @@ function comment_unpublish_by_keyword_action_submit($form, $form_state) {
  * @ingroup actions
  */
 function comment_save_action($comment) {
-  comment_save($comment);
-  cache_clear_all();
-  watchdog('action', 'Saved comment %title', array('%title' => $comment->subject));
+  if (comment_save($comment)) {
+    cache_clear_all();
+    watchdog('action', 'Saved comment %title', array('%title' => $comment->subject));
+  }
+  else {
+    watchdog('action', 'Comment %title could not be saved', array('%title' => $comment->subject), WATCHDOG_ERROR);
+  }
 }
 
 /**
diff --git modules/comment/comment.pages.inc modules/comment/comment.pages.inc
index 3197125..9d412d0 100644
--- modules/comment/comment.pages.inc
+++ modules/comment/comment.pages.inc
@@ -112,9 +112,14 @@ function comment_approve($cid) {
   }
   if ($comment = comment_load($cid)) {
     $comment->status = COMMENT_PUBLISHED;
-    comment_save($comment);
+    if (comment_save($comment)) {
+      drupal_set_message(t('Comment approved.'));
+    }
+    else {
+      watchdog('content', 'There was an error approving comment %subject.', array('%subject' => $comment->subject), WATCHDOG_ERROR);
+      drupal_set_message(t('There was an error approving the comment.'));
+    }
 
-    drupal_set_message(t('Comment approved.'));
     drupal_goto('node/' . $comment->nid);
   }
   return MENU_NOT_FOUND;
