Index: wp-includes/version.php
===================================================================
--- wp-includes/version.php	(revision 11556)
+++ wp-includes/version.php	(working copy)
@@ -15,7 +15,7 @@
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 11548;
+$wp_db_version = 11557;
 
 /**
  * Holds the TinyMCE version
Index: wp-admin/includes/upgrade.php
===================================================================
--- wp-admin/includes/upgrade.php	(revision 11556)
+++ wp-admin/includes/upgrade.php	(working copy)
@@ -269,6 +269,7 @@
 
 	wp_check_mysql_version();
 	wp_cache_flush();
+	pre_schema_upgrade();
 	make_db_current_silent();
 	upgrade_all();
 	wp_cache_flush();
@@ -1656,4 +1657,34 @@
 	}
 }
 
+/**
+ * Runs before the schema is upgraded.
+ */
+function pre_schema_upgrade() {
+	global $wp_current_db_version, $wp_db_version, $wpdb;
+
+	// Only run if less than 2.9
+	if ( $wp_current_db_version >= 11557 )
+		return;
+
+	// Delete duplicate options.  Keep the option with the highest option_id.
+	$options = $wpdb->get_results("SELECT option_name, option_id FROM $wpdb->options ORDER BY option_id DESC");
+	$seen_options = array();
+	$delete_options = array();
+	foreach ($options as $option) {
+		if ( isset( $seen_options[$option->option_name] ) ) {
+			$delete_options[] = $option->option_id;
+			wp_cache_delete($option->option_name, 'options');
+		} else {
+			$seen_options[$option->option_name] = true;
+		}
+	}
+
+	if ( empty($delete_options) )
+		return;
+
+	$delete_options = implode("', '", $delete_options);
+	$wpdb->query("DELETE FROM $wpdb->options WHERE option_id IN ($delete_options)");
+}
+
 ?>
Index: wp-admin/includes/schema.php
===================================================================
--- wp-admin/includes/schema.php	(revision 11556)
+++ wp-admin/includes/schema.php	(working copy)
@@ -100,7 +100,7 @@
   option_value longtext NOT NULL,
   autoload varchar(20) NOT NULL default 'yes',
   PRIMARY KEY  (option_id,blog_id,option_name),
-  KEY option_name (option_name)
+  UNIQUE KEY name (option_name)
 ) $charset_collate;
 CREATE TABLE $wpdb->postmeta (
   meta_id bigint(20) unsigned NOT NULL auto_increment,
