不确定这是否有助于展开对话来帮助解决这个问题,但我已经将错误消息缩小到由类核心升级的第118-122行生成。php(wp管理/包括)
// 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\'] );
}
函数create\\U lock位于文件类wp upgrader中。php在线885-918
在返回之前输入回显代码,我可以将其缩小到函数(899-901)中的这些行
// If a lock couldn\'t be created, and there isn\'t a lock, bail.
if ( ! $lock_result ) {
return false;
}
出于某种原因,我可以通过RouteXL查询上面的代码,并生成一个锁,但WP无法在第893行插入查询
$lock_result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, \'no\') /* LOCK */", $lock_option, time() ) );
在893之后插入此行
echo $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, \'no\') /* LOCK */", $lock_option, time() );
更新时给我回显代码
INSERT IGNORE INTO `wp_options` ( `option_name`, `option_value`, `autoload` ) VALUES (\'core_updater.lock\', \'1606851384\', \'no\') /* LOCK */
我手动运行了这个查询,它使用与我的WP安装相同的用户/过程将行正确插入MySQL数据库。
我不完全清楚wordpress为什么不能做到这一点,但我可以使用相同的凭据手动完成。