正如@Charleston Software Associates提到的,如果表不存在,则不应执行descripe查询。正如他所指出的,最好的解决方案是首先防止错误的发生。
为此,请修补wp-admin/includes/upgrade.php
具体如下:
更改dbDelta()中的以下行:
$tablefields = $wpdb->get_results("DESCRIBE {$table};”);
收件人:
//Begin core hack - See http://wordpress.stackexchange.com/q/141971/10388
$check_table = $wpdb->get_results("SHOW TABLES LIKE \'".str_replace("_", "\\_", $table)."\';");
if(!empty($check_table))
$tablefields = $wpdb->get_results("DESCRIBE {$table};");
else
$tablefields = null;
//End core hack
这不是最干净的解决方案(尤其是因为它是一个核心黑客),但至少对我来说是可行的!也许这会帮助其他人。
更新:见下面我的评论。(这并不能完全解决问题,尽管这是朝着正确方向迈出的一步)