public function update_db( $args, $assoc_args ) {
		global $wpdb, $wp_db_version, $wp_current_db_version;

		$network = Utils\get_flag_value( $assoc_args, 'network' );
		if ( $network && ! is_multisite() ) {
			WP_CLI::error( 'This is not a multisite installation.' );
		}

		$dry_run = Utils\get_flag_value( $assoc_args, 'dry-run' );
		if ( $dry_run ) {
			WP_CLI::log( 'Performing a dry run, with no database modification.' );
		}

		if ( $network ) {
			$iterator_args = [
				'table' => $wpdb->blogs,
				'where' => [
					'spam'     => 0,
					'deleted'  => 0,
					'archived' => 0,
				],
			];
			$it            = new TableIterator( $iterator_args );
			$success       = 0;
			$total         = 0;
			$site_ids      = [];
			foreach ( $it as $blog ) {
				$total++;
				$site_ids[] = $blog->site_id;
				$url        = $blog->domain . $blog->path;
				$cmd        = "--url={$url} core update-db";
				if ( $dry_run ) {
					$cmd .= ' --dry-run';
				}
				$process = WP_CLI::runcommand( $cmd, [ 'return' => 'all' ] );
				if ( 0 === (int) $process->return_code ) {
					// See if we can parse the stdout
					if ( preg_match( '#Success: (.+)#', $process->stdout, $matches ) ) {
						$message = rtrim( $matches[1], '.' );
						$message = "{$message} on {$url}";
					} else {
						$message = "Database upgraded successfully on {$url}";
					}
					WP_CLI::log( $message );
					$success++;
				} else {
					WP_CLI::warning( "Database failed to upgrade on {$url}" );
				}
			}
			if ( ! $dry_run && $total && $success === $total ) {
				foreach ( array_unique( $site_ids ) as $site_id ) {
					update_metadata( 'site', $site_id, 'wpmu_upgrade_site', $wp_db_version );
				}
			}
			WP_CLI::success( "WordPress database upgraded on {$success}/{$total} sites." );
		} else {
			require_once ABSPATH . 'wp-admin/includes/upgrade.php';
			// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Replacing WP Core behavior is the goal here.
			$wp_current_db_version = (int) __get_option( 'db_version' );
			if ( $wp_db_version !== $wp_current_db_version ) {
				if ( $dry_run ) {
					WP_CLI::success( "WordPress database will be upgraded from db version {$wp_current_db_version} to {$wp_db_version}." );
				} else {
					// WP upgrade isn't too fussy about generating MySQL warnings such as "Duplicate key name" during an upgrade so suppress.
					$wpdb->suppress_errors();

					// WP upgrade expects `$_SERVER['HTTP_HOST']` to be set in `wp_guess_url()`, otherwise get PHP notice.
					if ( ! isset( $_SERVER['HTTP_HOST'] ) ) {
						$_SERVER['HTTP_HOST'] = 'http://example.com';
					}

					wp_upgrade();

					WP_CLI::success( "WordPress database upgraded successfully from db version {$wp_current_db_version} to {$wp_db_version}." );
				}
			} else {
				WP_CLI::success( "WordPress database already at latest db version {$wp_db_version}." );
			}
		}
	}
public function update_db( $args, $assoc_args ) {
		global $wpdb, $wp_db_version, $wp_current_db_version;

		$network = Utils\get_flag_value( $assoc_args, 'network' );
		if ( $network && ! is_multisite() ) {
			WP_CLI::error( 'This is not a multisite installation.' );
		}

		$dry_run = Utils\get_flag_value( $assoc_args, 'dry-run' );
		if ( $dry_run ) {
			WP_CLI::log( 'Performing a dry run, with no database modification.' );
		}

		if ( $network ) {
			$iterator_args = [
				'table' => $wpdb->blogs,
				'where' => [
					'spam'     => 0,
					'deleted'  => 0,
					'archived' => 0,
				],
			];
			$it            = new TableIterator( $iterator_args );
			$success       = 0;
			$total         = 0;
			$site_ids      = [];
			foreach ( $it as $blog ) {
				$total++;
				$site_ids[] = $blog->site_id;
				$url        = $blog->domain . $blog->path;
				$cmd        = "--url={$url} core update-db";
				if ( $dry_run ) {
					$cmd .= ' --dry-run';
				}
				$process = WP_CLI::runcommand( $cmd, [ 'return' => 'all' ] );
				if ( 0 === (int) $process->return_code ) {
					// See if we can parse the stdout
					if ( preg_match( '#Success: (.+)#', $process->stdout, $matches ) ) {
						$message = rtrim( $matches[1], '.' );
						$message = "{$message} on {$url}";
					} else {
						$message = "Database upgraded successfully on {$url}";
					}
					WP_CLI::log( $message );
					$success++;
				} else {
					WP_CLI::warning( "Database failed to upgrade on {$url}" );
				}
			}
			if ( ! $dry_run && $total && $success === $total ) {
				foreach ( array_unique( $site_ids ) as $site_id ) {
					update_metadata( 'site', $site_id, 'wpmu_upgrade_site', $wp_db_version );
				}
			}
			WP_CLI::success( "WordPress database upgraded on {$success}/{$total} sites." );
		} else {
			require_once ABSPATH . 'wp-admin/includes/upgrade.php';
			// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Replacing WP Core behavior is the goal here.
			$wp_current_db_version = (int) __get_option( 'db_version' );
			if ( $wp_db_version !== $wp_current_db_version ) {
				if ( $dry_run ) {
					WP_CLI::success( "WordPress database will be upgraded from db version {$wp_current_db_version} to {$wp_db_version}." );
				} else {
					// WP upgrade isn't too fussy about generating MySQL warnings such as "Duplicate key name" during an upgrade so suppress.
					$wpdb->suppress_errors();

					// WP upgrade expects `$_SERVER['HTTP_HOST']` to be set in `wp_guess_url()`, otherwise get PHP notice.
					if ( ! isset( $_SERVER['HTTP_HOST'] ) ) {
						$_SERVER['HTTP_HOST'] = 'http://example.com';
					}

					wp_upgrade();

					WP_CLI::success( "WordPress database upgraded successfully from db version {$wp_current_db_version} to {$wp_db_version}." );
				}
			} else {
				WP_CLI::success( "WordPress database already at latest db version {$wp_db_version}." );
			}
		}
	}
public function update_db ( $ args , $ assoc_args ) { global $ wpdb , $ wp_db_version , $ wp_current_db_version ; $ network = Utils \ get_flag_value ( $ assoc_args , 'network' ) ; if ( $ network && ! is_multisite ( ) ) { WP_CLI :: error ( 'This is not a multisite installation.' ) ; } $ dry_run = Utils \ get_flag_value ( $ assoc_args , 'dry-run' ) ; if ( $ dry_run ) { WP_CLI :: log ( 'Performing a dry run, with no database modification.' ) ; } if ( $ network ) { $ iterator_args = [ 'table' => $ wpdb -> blogs , 'where' => [ 'spam' => 0 , 'deleted' => 0 , 'archived' => 0 , ] , ] ; $ it = new TableIterator ( $ iterator_args ) ; $ success = 0 ; $ total = 0 ; $ site_ids = [ ] ; foreach ( $ it as $ blog ) { $ total ++ ; $ site_ids [ ] = $ blog -> site_id ; $ url = $ blog -> domain . $ blog -> path ; $ cmd = "--url={$url} core update-db" ; if ( $ dry_run ) { $ cmd .= ' --dry-run' ; } $ process = WP_CLI :: runcommand ( $ cmd , [ 'return' => 'all' ] ) ; if ( 0 === ( int ) $ process -> return_code ) { // See if we can parse the stdout if ( preg_match ( '#Success: (.+)#' , $ process -> stdout , $ matches ) ) { $ message = rtrim ( $ matches [ 1 ] , '.' ) ; $ message = "{$message} on {$url}" ; } else { $ message = "Database upgraded successfully on {$url}" ; } WP_CLI :: log ( $ message ) ; $ success ++ ; } else { WP_CLI :: warning ( "Database failed to upgrade on {$url}" ) ; } } if ( ! $ dry_run && $ total && $ success === $ total ) { foreach ( array_unique ( $ site_ids ) as $ site_id ) { update_metadata ( 'site' , $ site_id , 'wpmu_upgrade_site' , $ wp_db_version ) ; } } WP_CLI :: success ( "WordPress database upgraded on {$success}/{$total} sites." ) ; } else { require_once ABSPATH . 'wp-admin/includes/upgrade.php' ; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Replacing WP Core behavior is the goal here. $ wp_current_db_version = ( int ) __get_option ( 'db_version' ) ; if ( $ wp_db_version !== $ wp_current_db_version ) { if ( $ dry_run ) { WP_CLI :: success ( "WordPress database will be upgraded from db version {$wp_current_db_version} to {$wp_db_version}." ) ; } else { // WP upgrade isn't too fussy about generating MySQL warnings such as "Duplicate key name" during an upgrade so suppress. $ wpdb -> suppress_errors ( ) ; // WP upgrade expects `$_SERVER['HTTP_HOST']` to be set in `wp_guess_url()`, otherwise get PHP notice. if ( ! isset ( $ _SERVER [ 'HTTP_HOST' ] ) ) { $ _SERVER [ 'HTTP_HOST' ] = 'http://example.com' ; } wp_upgrade ( ) ; WP_CLI :: success ( "WordPress database upgraded successfully from db version {$wp_current_db_version} to {$wp_db_version}." ) ; } } else { WP_CLI :: success ( "WordPress database already at latest db version {$wp_db_version}." ) ; } } }
Runs the WordPress database update procedure.

[--network]
: Update databases for all sites on a network

[--dry-run]
: Compare database versions without performing the update.

## EXAMPLES

# Update the WordPress database
$ wp core update-db
Success: WordPress database upgraded successfully from db version 36686 to 35700.

# Update databases for all sites on a network
$ wp core update-db --network
WordPress database upgraded successfully from db version 35700 to 29630 on example.com/
Success: WordPress database upgraded on 123/123 sites

@subcommand update-db
Runs the WordPress database update procedure .