MySQL 报错 Illegal mix of collations

| 选择喜欢的代码风格  

这表明在 MySQL 数据库中进行操作时,涉及到的两个表或列使用了不同的字符集排序规则 -collation 。具体来说,一个是 utf8mb4_general_ci,另一个是 utf8mb4_0900_ai_ci。这种差异导致 MySQL 无法正确处理字符串比较或连接操作,JSON_TABLE 也是一样。

下面这个方式,写 SQL 的时候,可以解决(FYI):

SELECT *
FROM `__TABLE_1__` B 
    JOIN 
    JSON_TABLE(
        F0001411Field->>'$.subDataIds', 
        '$[*]' COLUMNS (
            subDataId VARCHAR(255) PATH '$'  
        ) 
    ) AS `J` 
LEFT JOIN `__TABLE_2__` C ON B.associateCustomerField->>'$.associateDataId' = C.`dataId` 
LEFT JOIN `__TABLE_3__` S ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci
WHERE ....
ORDER BY  1 DESC 

注意上面最后部分:ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci

MySQL JSON_TABLE、collations 扩展阅读:




发表评论