这可能是因为在安装或升级WooCommerce时,未正确创建wp_wc_orders表。可以使用以下SQL语句手动创建表:
CREATE TABLE wp_wc_orders
(
order_id
bigint(20) unsigned NOT NULL,
PRIMARY KEY (order_id
),
KEY order_key
(order_key
(14))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
如果表已经存在,可以通过以下代码修复:
global $wpdb;
$wpdb->query( DROP TABLE IF EXISTS {$wpdb->prefix}wc_order_stats
" );
$wpdb->query( "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wc_order_stats
(
order_id
bigint(20) unsigned NOT NULL,
PRIMARY KEY (order_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;" );
$wpdb->query( "DROP VIEW IF EXISTS {$wpdb->prefix}wc_order_product_lookup
" );
$wpdb->query( "CREATE VIEW {$wpdb->prefix}wc_order_product_lookup
AS
SELECT order_items.order_id AS order_id, order_items.order_item_id AS order_item_id, order_items.product_id AS product_id, SUM(order_item_meta.meta_value) AS variation_id, order_item_meta_2.meta_value AS quantity
FROM {$wpdb->prefix}woocommerce_order_items
AS order_items
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta
AS order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id AND order_item_meta.meta_key LIKE '_qty'
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta
AS order_item_meta_2 ON order_items.order_item_id = order_item_meta_2.order_item_id AND order_item_meta_2.meta_key = '_qty'
WHERE order_items.order_item_type = 'line_item'
GROUP BY order_items.order_id, order_items.order_item_id, order_items.product_id, variation_id, order_item_meta_2.meta_value
" );"