インフラエンジニアbacchiのわかったことまとめ

bacchi.me

WordPress で「別の更新が現在進行中です。」と表示されたときの対処方法

WordPress 4.7.3への更新中、誤ってページをリロードしてしましました。

再度更新しようとすると下記のように

「別の更新が現在進行中です。」

と表示れてしまいました。

このような場合の対処方は2つあります。

  • とりあえず15分待つ
  • DBから core_updater.lock を消す

とりあえず15分待つ

とりあえず15分待てばロックは解除されます。

WordPress の class-core-upgrader.php の100行目くらいからアップデートに関する処理が書かれていて、

そこに複数の更新が発生しないように15分間更新をロックする処理が書かれています。

/*
 * If partial update is returned from the API, use that, unless we're doing
  * a reinstall. If we cross the new_bundled version number, then use
  * the new_bundled zip. Don't though if the constant is set to skip bundled items.
  * If the API returns a no_content zip, go with it. Finally, default to the full zip.
  */
 if ( $parsed_args['do_rollback'] &&&& $current->packages->rollback )
     $to_download = 'rollback';
 elseif ( $current->packages->partial &&&& 'reinstall' != $current->response &&&& $wp_version == $current->partial_version &&&& $partial )
     $to_download = 'partial';
 elseif ( $current->packages->new_bundled &&&& version_compare( $wp_version, $current->new_bundled, '<' )
     &&&& ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) )
     $to_download = 'new_bundled';
 elseif ( $current->packages->no_content )
     $to_download = 'no_content';
 else
     $to_download = 'full';

 // Lock to prevent multiple Core Updates occurring
 $lock = WP_Upgrader::create_lock( 'core_updater', 15 * MINUTE_IN_SECONDS );
 if ( ! $lock ) {
     return new WP_Error( 'locked', $this->strings['locked'] );
 }

WordPressの更新時に、間違って別のページに遷移してしまった場合など、

更新時にエラーが出ていない場合は、ダウンロードに時間がかかっているなど本当に更新が進行中の場合もあるので15分待っていてもいいかも。

core_updater.lock を消す

WordPress の更新時にエラー発生して更新が止まってしまった場合は、更新プロセスは止まってしまっています。

その場合も、上記と同様に15分待てば更新作業を再開できます。

ただ、「15分も待ってられるか!」

という場合は、DB の core_updater.lock を消せば、すぐに更新作業を再開できます。

下記のクエリを流せばOK!

delete from wp_options where option_name = 'core_updater.lock';

phpMyAdmin などのツールを使って消す場合は、

wp_options の option_name を「core_updater.lock」で検索して、それを消せばOKです。

  • B!