Why is your update stuck?
You clicked 'Update Now,' the screen flickered, and then everything froze. Perhaps your Wi-Fi dropped for a split second or your server hit its 30-second processing limit. Now, you're greeted by a stubborn message: Another update is currently in progress. Even after waiting 20 minutes, the message won't budge. You're stuck in maintenance limbo.
The Logic Behind the Lock
Think of this error as a safety latch. WordPress prevents multiple updates from running simultaneously to avoid database corruption or a broken site. When an update starts, the system adds a record called core_updater.lock to your wp_options table. Normally, WordPress deletes this row automatically the moment the update finishes. However, if the process crashes or times out, the record stays behind. WordPress sees it, assumes an update is still active, and blocks all new attempts.
Solution 1: Manual Database Cleanup
Getting under the hood to delete the lock manually is the most reliable fix. You can do this through the terminal or a web interface like phpMyAdmin.
Option A: Using the MySQL Command Line
If you have SSH access, this is the fastest route. Log into your database and run a quick delete query.
# Access MySQL
mysql -u your_username -p
# Switch to your site's database
USE your_wordpress_db;
# Confirm the lock exists
SELECT * FROM wp_options WHERE option_name = 'core_updater.lock';
# Clear the lock
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
Pro tip: Don't forget to swap wp_ with your custom prefix (like site77_) if you changed it during installation for security.
Option B: Using phpMyAdmin
- Open phpMyAdmin from your hosting dashboard (cPanel, Plesk, etc.).
- Select your WordPress database from the list on the left.
- Click the SQL tab at the top of the screen.
- Paste this command and click Go:
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
## Solution 2: The WP-CLI Shortcut
Prefer the terminal? If you have WP-CLI installed, you can bypass raw SQL entirely. This command identifies and deletes the option in one go.
Head to your WordPress root folder
cd /var/www/html
Wipe the lock option
wp option delete core_updater.lock
If it works, you’ll see: `Success: Deleted 'core_updater.lock' option.`
## Solution 3: Using a Plugin (No Code Required)
If touching the database makes you nervous, let a plugin handle it. The 'Fix Another Update In Progress' plugin was built for this exact scenario.
- Go to **Plugins > Add New**.
- Search for "Fix Another Update In Progress."
- Install and activate it.
- Visit **Settings > Fix Another Update In Progress**.
- If it detects a lock, click the button to clear it.
- Delete the plugin once you're done to keep your site lean.
## Verification: Back to Business
Once the lock is gone, head back to **Dashboard > Updates**. The error message should be replaced by the standard update buttons. Try running your update again. If the error returns immediately, your server is likely hitting a `max_execution_time` limit, causing the update to fail and re-lock the database every time.
## How to Stop Future Timeouts
Most shared hosts cap PHP tasks at 30 or 60 seconds. Large core updates often need more time to unzip and move files. To prevent this from happening again, increase your execution limit in your `.htaccess` or `php.ini` file:
Add this to .htaccess
php_value max_execution_time 300
Or update your php.ini
max_execution_time = 300
Setting this to 300 seconds (5 minutes) gives WordPress plenty of breathing room to finish even the heaviest updates.

