PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe WordPress message “Another update is currently in progress” usually means a database lock, not a damaged installation. WordPress stores the core-update lock as the core_updater.lock option in the wp_options table. If an update times out, loses its connection, hits a PHP memory limit, or the server restarts, that row can remain after the updater has stopped.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
For a core update, WordPress treats the lock as stale after 15 minutes. Wait at least that long, confirm that no update is actually running, and try again. If the notice remains, back up the database and remove only the core_updater.lock row with WP-CLI or phpMyAdmin. A separate .maintenance file matters only when the site is still showing a maintenance screen.
As an Amazon Associate I earn from qualifying purchases.
What the message means
WordPress prevents two core updates from running at the same time. Before Core_Upgrader::upgrade() starts, it requests a lock named core_updater. The generic upgrader appends .lock when it saves that lock, so the database option is named core_updater.lock.
The core updater asks for a 15-minute lock timeout, expressed in the source as 15 * MINUTE_IN_SECONDS. If another process owns a current lock, WordPress returns a locked error and displays the familiar notice. If the stored lock is older than the requested timeout, WP_Upgrader::create_lock() considers it stale, clears it, and allows a new update to proceed.
This is why the message often appears after an update that did not finish cleanly. A PHP timeout, exhausted memory, dropped network connection, web-server restart, or interrupted background request can stop the work while leaving the option row behind. The row itself does not prove that files are still being changed.
Check these things before deleting anything
Deleting a lock while another updater is active can produce a second, conflicting update. Make the following checks first:
- Confirm that nobody else is running a WordPress core update in another browser tab, through a hosting control panel, or from a scheduled task.
- Check whether an update request is still visibly progressing. If it started only a few minutes ago, leave it alone rather than forcing a second attempt.
- Ask other administrators whether they initiated an update.
- Take a fresh database backup before manually deleting a row. Store the backup somewhere separate from the server and make sure it can be downloaded.
- Record the site’s database table prefix. The default table is
wp_options, but a site configured with another prefix will use a different table name.
If you cannot determine whether an update is active, wait and contact the host or the person who manages the site instead of removing the lock immediately.
Fix 1: wait for the 15-minute timeout
Waiting is the lowest-risk solution because WordPress can clean up a stale lock itself. The 15-minute period is the timeout requested by the core updater; it is not a guarantee that every failed request will finish in exactly 15 minutes.
Rank #2
- Note the time at which the last update attempt ended or became unresponsive.
- Wait at least 15 minutes from that point. If the server is under load or you are unsure when the attempt stopped, waiting 20 to 30 minutes avoids racing a still-running process.
- Sign in to the WordPress dashboard again and open Dashboard → Updates.
- Run the core update once. Do not open several update tabs or click the button repeatedly.
If the update starts normally, allow it to finish and verify the new version on the Updates screen. If the same notice appears after the timeout, use one of the controlled deletion methods below.
Fix 2: delete the lock with WP-CLI
WP-CLI is the cleanest manual method when you have shell access and the command is installed for the site. Run it from the WordPress installation directory, or provide the correct path with your normal WP-CLI options.
- Confirm again that no core update is running.
- Open a shell as the user that owns or is permitted to manage the WordPress files.
- From the WordPress root, run:
wp option delete core_updater.lock
- Return to Dashboard → Updates and start the update once.
- If the command reports that the option does not exist, the lock has already expired or was removed; retry the update rather than deleting unrelated options.
The command targets one option by its exact name. Do not substitute a broad command that deletes every option containing “lock,” and do not remove plugin- or theme-related rows unless you have a separate, verified reason.
Fix 3: delete the row in phpMyAdmin or with SQL
Use this method only after making a database backup and confirming that no updater is active. phpMyAdmin is commonly available in a hosting control panel; an administrator can also execute the equivalent statement through a trusted MySQL client.
Rank #3
- Open the database assigned to the affected WordPress installation.
- Open the options table. With the default prefix, it is
wp_options; replacewp_with the site’s actual prefix when necessary. - Use the search function to find the exact option name
core_updater.lock. - Verify that the row belongs to this site and that no update is currently running.
- Delete only that row. The equivalent SQL is:
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
- Close the database tool, sign in to WordPress, and run the core update once from Dashboard → Updates.
Do not paste the statement unchanged if the installation uses a different table prefix. Do not run it against an unrelated database, and do not use a wildcard such as LIKE '%updater.lock%'. The verified core lock is the single core_updater.lock option; the existence and purpose of other similarly named rows should not be assumed.
Which method should you choose?
| Method | Access required | Relative safety | Best use |
|---|---|---|---|
| Wait and retry | WordPress dashboard | Highest; no data is changed | The update stopped less than 15 minutes ago or you are unsure whether it is still active |
| WP-CLI | Shell access and WP-CLI | High when the exact option is targeted | You can work from the site’s WordPress directory and want a precise command |
| phpMyAdmin or SQL | Database access | High only with a current backup and the correct table prefix | WP-CLI is unavailable but you can identify the site’s options table |
| Host support | Neither shell nor database access | Depends on the host’s procedure | You cannot verify the update state or safely access the database |
Speed does not make a method safer. Waiting avoids manual changes; WP-CLI and SQL are fast but should be used only after the update state and backup have been checked.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What to do if the message comes back immediately
The lock is recreated after deletion
If core_updater.lock reappears as soon as you retry, an updater is probably still being launched. Stop clicking the update button, check with other administrators, and ask the host whether a background or scheduled update is running. Removing the row repeatedly can create competing processes rather than solving the cause.
The option is missing but the dashboard still shows the notice
Refresh the dashboard after clearing browser caching and sign in again. Then check the database connected to this installation, not a staging or neighboring site. A different table prefix or database connection can make it appear that the row was deleted when WordPress is reading another options table.
The update fails for a different reason
Once the lock is gone, WordPress may expose the original failure: insufficient PHP memory, a timeout, a permissions problem, or an unavailable download. Treat that as a new error. Do not keep deleting the lock when the updater is now reporting a concrete filesystem, PHP, or network problem.
You cannot use either WP-CLI or phpMyAdmin
Give the host the exact option name, core_updater.lock, and ask it to verify that no update is active before removing it. A host can also confirm the correct database and table prefix. Avoid uploading an unknown database script or editing serialized option data through a file manager.
Understanding the separate maintenance-mode file
WordPress has another update safeguard: WP_Upgrader::maintenance_mode() writes an empty file named .maintenance in the WordPress root, represented by ABSPATH. The file signals that an update is in progress and is removed when the relevant update completes. The plugin upgrader enables this mode before backgrounding an active plugin update.
The core source reviewed for this error does not establish that every core-update path always creates the file. Therefore, treat the lock and the maintenance file as separate problems. A stale lock does not automatically mean that .maintenance exists, and deleting a maintenance file will not clear core_updater.lock.
Best Value
If visitors see a maintenance screen
- Confirm that no update is still running and that the dashboard is not actively processing one.
- Using FTP or the host’s file manager, open the WordPress root—the directory containing
wp-adminandwp-content. - Enable display of hidden files and look for
.maintenance. - Delete that single file if it is clearly left over from the failed update.
- Reload the site and then address the database lock separately if the dashboard still reports the update error.
Do not delete other hidden files in the root, and do not remove .maintenance while an update is genuinely running.
Why WordPress uses a lock at all
The lock prevents two core-upgrade routines from changing the same files at once. In the core upgrade method, a failed early-exit path releases the lock, and the normal completion path releases it before returning. A leftover row is therefore usually evidence that the process ended outside those cleanup paths, not evidence that WordPress intentionally keeps the site blocked forever.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsWP_Upgrader::create_lock() accepts a timeout and removes an existing lock when its stored age exceeds that timeout. Its default timeout is one hour when a caller does not provide one; the core updater explicitly provides the shorter 15-minute value. This distinction explains why advice written for a generic upgrader can mention an hour while a core update normally clears after 15 minutes.
Recovery checklist after the update succeeds
- Open Dashboard → Updates and verify that WordPress reports the expected core version.
- Load the public site and the login page in a private browser window.
- Check a few important pages, media URLs, and forms for obvious errors.
- Confirm that the maintenance screen is gone; if it remains, inspect the root for a leftover
.maintenancefile after verifying that no update is active. - Keep the database backup until the site has operated normally for a while.
If the update itself did not complete, restore from the backup only after identifying what changed and obtaining appropriate technical help. Restoring a database alone does not restore WordPress core files, so a file-level recovery may also be required in a severe failed-update case.
Preventing another stuck update
- Run one core update at a time and wait for the dashboard to finish before starting another maintenance task.
- Avoid terminating the browser request or restarting the server while an update is visibly running.
- Keep a recent database backup before planned core upgrades.
- Use the host’s normal maintenance window when the site has slow connections or limited server resources.
- When a failure repeats, preserve the exact error shown after the lock is cleared; that second error is more useful for diagnosing the underlying PHP, permission, or network problem.
The practical rule is simple: wait through the 15-minute core timeout first, then clear only core_updater.lock with a backup and a verified idle updater. Treat .maintenance as a separate file-system issue, not as a substitute for fixing the database lock.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →




