我遇到了一些奇怪的问题。我的数据库设置为 utf8mb4_unicode_ci 排序规则。该数据库中的 (WooCommerce) 表也是如此。表格中的列也在 utf8mb4_unicode_ci.
我已经创建了一个视图,现在为计算字段 sku_class 获得了不同的排序规则(如 utf8mb4_general_ci)。这怎么可能?而且,更重要的是,我该如何解决它?
创建视图的简短查询是:
SET character_set_connection = 'utf8mb4';
CREATE VIEW vw_wc_product_details AS
SELECT
pm.sku,
( CASE
-- manual fixes
WHEN pm.sku LIKE 'AB1404/%' THEN 'c'
-- default rules
WHEN pm.sku LIKE 'ABs__-_%' THEN 's'
WHEN pm.sku LIKE 'ABt__-_%' THEN 't'
WHEN pm.sku LIKE 'AB____/%' THEN 'pc'
WHEN ( SELECT COUNT(sku) FROM wp_wc_product_meta_lookup WHERE sku LIKE CONCAT(pm.sku, '/_%') ) >= 1 THEN 'p'
WHEN pm.sku LIKE 'AB____%' AND LENGTH(pm.sku) = 6 THEN 'c'
WHEN pm.sku LIKE 'AX%' AND LENGTH(pm.sku) >= 6 THEN 'm'
ELSE 'x'
END ) as sku_class
FROM wp_wc_product_attributes_lookup AS pa
LEFT JOIN wp_terms AS t ON pa.term_id = t.term_id
LEFT JOIN wp_wc_product_meta_lookup AS pm ON pa.product_id = pm.product_id
LEFT JOIN wp_posts AS p ON pa.product_id = p.ID
COLLATE 'utf8mb4_unicode_ci'
SET character_set_connection = 'utf8mb4';
和 COLLATE 'utf8mb4_unicode_ci'
行已添加,因为我收到了非法混合排序规则错误,这让我开始仔细检查所有相关内容的排序规则。