diff --git wp-admin/includes/upgrade.php wp-admin/includes/upgrade.php
index d4c0097..8efbc9c 100644
--- wp-admin/includes/upgrade.php
+++ wp-admin/includes/upgrade.php
@@ -2168,7 +2168,7 @@ function dbDelta( $queries = '', $execute = true ) {
 			continue;
 
 		// Clear the field and index arrays.
-		$cfields = $indices = array();
+		$cfields = $indices = $change_indices = array();
 
 		// Get all of the field names in the query from between the parentheses.
 		preg_match("|\((.*)\)|ms", $qry, $match2);
@@ -2307,6 +2307,25 @@ function dbDelta( $queries = '', $execute = true ) {
 					"$index_string ($alt_index_columns)",
 				);
 
+				// Find the index key so we know what already exists and needs to be dropped first.
+				if ( preg_match( "/KEY ([^ ]*)/", $index_string, $matches ) || preg_match( "/INDEX ([^ ]*)/", $index_string, $matches ) ) {
+					if ( ! empty( $matches[1] ) ) {
+						foreach ( $indices as $key => $value ) {
+							if ( false !== stripos( $value, 'KEY ' . $matches[1] . ' ' ) || false !== stripos( $value, 'INDEX ' . $matches[1] . ' ' ) ) {
+
+								// We found an existing key, but need to determine if the index actually is changing.
+								if ( ! in_array( $value, $index_strings ) ) {
+									// If we reach this point, an existing index exists and is changing.
+									$change_indices[ $matches[1] ] = $value;
+								}
+
+								unset( $indices[ $key ] );
+								break;
+							}
+						}
+					}
+				}
+
 				foreach ( $index_strings as $index_string ) {
 					if ( ! ( ( $aindex = array_search( $index_string, $indices ) ) === false ) ) {
 						unset( $indices[ $aindex ] );
@@ -2320,6 +2339,14 @@ function dbDelta( $queries = '', $execute = true ) {
 			}
 		}
 
+		/**
+		 * Handle indexes that are changing.
+		 */
+		foreach ( $change_indices as $existing_index => $index ) {
+			$cqueries[]   = "ALTER TABLE {$table} DROP INDEX $existing_index, ADD $index";
+			$for_update[] = 'Changed index ' . $table . ' ' . $existing_index . ' to ' . $index;
+		}
+
 		// For every remaining index specified for the table.
 		foreach ( (array) $indices as $index ) {
 			// Push a query line into $cqueries that adds the index to that table.
