Index: wp-includes/meta.php
===================================================================
--- wp-includes/meta.php	(revision 12593)
+++ wp-includes/meta.php	(working copy)
@@ -30,6 +30,12 @@
 
 	$meta_value = maybe_serialize( stripslashes_deep($meta_value) );
 
+	// prevent duplicates
+	if ( $wpdb->get_var( $wpdb->prepare(
+		"SELECT COUNT(*) FROM $table WHERE meta_key = %s AND meta_value = %s AND $column = %d",
+		$meta_key, $meta_value, $object_id ) ) )
+		return false;
+
 	$wpdb->insert( $table, array(
 		$column => $object_id,
 		'meta_key' => $meta_key,
