Core_Command::update_db PHP Method

update_db() public method

[--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
public update_db ( $_, $assoc_args )
    function update_db($_, $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 install.');
        }
        $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 = array('table' => $wpdb->blogs, 'where' => array('spam' => 0, 'deleted' => 0, 'archived' => 0));
            $it = new \WP_CLI\Iterators\Table($iterator_args);
            $success = $total = 0;
            foreach ($it as $blog) {
                $total++;
                $url = $blog->domain . $blog->path;
                $cmd = "--url={$url} core update-db";
                if ($dry_run) {
                    $cmd .= ' --dry-run';
                }
                $process = WP_CLI::runcommand($cmd, array('return' => 'all'));
                if (0 == $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) {
                update_site_option('wpmu_upgrade_site', $wp_db_version);
            }
            WP_CLI::success(sprintf('WordPress database upgraded on %d/%d sites.', $success, $total));
        } else {
            require_once ABSPATH . 'wp-admin/includes/upgrade.php';
            $wp_current_db_version = __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();
                    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}.");
            }
        }
    }