Index: src/wp-admin/includes/upgrade.php
===================================================================
--- src/wp-admin/includes/upgrade.php	(revision 32379)
+++ src/wp-admin/includes/upgrade.php	(working copy)
@@ -527,7 +527,7 @@
 	if ( $wp_current_db_version < 31351 )
 		upgrade_420();
 
-	if ( $wp_current_db_version < 32364 )
+	if ( $wp_current_db_version < 32378 )
 		upgrade_430();
 
 	maybe_disable_link_manager();
@@ -1479,6 +1479,18 @@
 			wp_delete_comment( $comment->comment_ID, true );
 		}
 	}
+
+	if ( $wp_current_db_version < 32378 && $wpdb->charset === 'utf8mb4' ) {
+		if ( is_multisite() ) {
+			$tables = $wpdb->tables( 'blog' );
+		} else {
+			$tables = $wpdb->tables( 'all' );
+		}
+
+		foreach ( $tables as $table ) {
+			maybe_convert_table_to_utf8mb4( $table );
+		}
+	}
 }
 
 /**
@@ -1609,6 +1621,12 @@
 			if ( $upgrade ) {
 				$wpdb->query( "ALTER TABLE $wpdb->signups DROP INDEX domain_path, ADD INDEX domain_path(domain(140),path(51))" );
 			}
+
+			$tables = $wpdb->tables( 'global' );
+
+			foreach ( $tables as $table ) {
+				maybe_convert_table_to_utf8mb4( $table );
+			}
 		}
 	}
 }
@@ -2446,6 +2464,37 @@
 		$wpdb->query( "ALTER TABLE $wpdb->postmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
 		$wpdb->query( "ALTER TABLE $wpdb->posts DROP INDEX post_name, ADD INDEX post_name(post_name(191))" );
 	}
+
+	// Upgrade versions prior to 4.2.2
+	if ( $wp_current_db_version < 32378 ) {
+			$tables = array(
+				$wpdb->usermeta => 'meta_key',
+				$wpdb->terms => 'slug',
+				$wpdb->terms => 'name',
+				$wpdb->commentmeta => 'meta_key',
+				$wpdb->postmeta => 'meta_key',
+				$wpdb->posts => 'post_name',
+			);
+
+			foreach ( $tables as $table => $table_index ) {
+				if ( $wpdb->usermeta == $table && is_multisite() ) {
+					continue;
+				}
+
+				$upgrade = false;
+				$indexes = $wpdb->get_results( "SHOW INDEXES FROM $table" );
+				foreach( $indexes as $index ) {
+					if ( $table_index == $index->Key_name && $table_index == $index->Column_name && 191 != $index->Sub_part ) {
+						$upgrade = true;
+						break;
+					}
+				}
+
+				if ( $upgrade ) {
+					$wpdb->query( "ALTER TABLE $table DROP INDEX $table_index, ADD INDEX $table_index($table_index(191))" );
+				}
+			}
+	}
 }
 
 /**
Index: src/wp-includes/wp-db.php
===================================================================
--- src/wp-includes/wp-db.php	(revision 32378)
+++ src/wp-includes/wp-db.php	(working copy)
@@ -739,7 +739,7 @@
 		}
 
 		if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) )
-		  || ( empty( $this->dbh ) || ! ( $this->dbh instanceof mysqli ) ) ) {
+		  || ( empty( $this->dbh ) ) ) {
 			return;
 		}
 
