sfw/fix
core_updater.lock medium

WordPress "Another update is currently in progress"

A previous core upgrade died mid-run and left a lock row in the database that blocks all further updates.

What you see

Another update is currently in progress.

What’s actually happening

You go to Dashboard > Updates to update WordPress core and get this line with no spinner and no way forward. It typically follows an upgrade that stalled — a PHP timeout, a closed browser tab, or a host that killed the process. Plugin and theme updates may still work; it's the core updater specifically that's wedged. Left alone it clears itself, but if you can't wait, you delete one database row.

Common causes

  • A core update hit max_execution_time or lost its connection partway through, so WP_Upgrader::create_lock() set core_updater.lock but the matching release_lock() never ran.
  • Two update attempts overlapped (a wp-cron auto-update firing while you clicked Update Now), and one left the lock behind.
  • The lock row legitimately exists and you're inside its ~15-minute window — this is WordPress working as designed, not a bug.
  • A failed or interrupted auto-background-update (WordPress's automatic minor-version updater) left the lock without surfacing any error to you.

How to fix it

  1. Wait about 15 minutesThe lock carries a timestamp and core ignores it once it's older than ~15 minutes (the WP_Upgrader lock TTL). If you're not blocked from real work, reload Dashboard > Updates after 15 minutes and retry. This is the zero-risk option.
  2. Delete the lock with WP-CLIFastest clean fix if you have shell access: wp option delete core_updater.lock — then refresh the Updates page and run the update again. WP-CLI talks straight to the DB, so it works even when wp-admin is acting up.
  3. Delete the row in phpMyAdminNo shell? Open phpMyAdmin, pick the database, browse the wp_options table (your prefix may differ), search option_name for core_updater.lock, and delete that single row. Don't touch anything else in wp_options.
  4. Confirm the original update actually finishedAfter clearing the lock, check Dashboard > Updates and the footer version. If the previous run died halfway, re-run the update so core files and the database schema are left consistent — a half-applied upgrade is worse than the lock.

Stop it recurring

Give updates room to finish: max_execution_time at 300+, don't close the tab mid-upgrade, and stagger auto-updates away from manual ones.

Related errors