麻花痒 发表于 2024-7-30 11:01:39

MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNI

MySQL在利用UNION查询时或者创建视图时报:非常:SQL error: #1271 - Illegal mix of collations for operation ‘UNION’
这个错误意味着在UNION查询中的两个或多个列利用了差别的字符集或校对规则,导致无法举行精确的合并操纵。
字符集和校对规则是用于决定怎样比较和排序字符串的规则。差别的字符集和校对规则可能导致相同的字符串在某些情况下被视为相同,而在其他情况下被视为差别。因此,当UNION查询中的列利用差别的字符集或校对规则时,MySQL无法确定怎样精确地合并这些列的效果,从而引发了#1271错误。
https://i-blog.csdnimg.cn/blog_migrate/f57318b28067c7004c2f4bfd33b71a82.jpeg
检察表的具体信息发现字符范例的字段的Collation差别
https://i-blog.csdnimg.cn/blog_migrate/68b64261fb0a80d5f497422ee6deae31.png
办理:



[*] 同一字符集和校对规则
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
https://i-blog.csdnimg.cn/blog_migrate/bf5870aa623e18370f5349c3d5a4f0d0.png
[*] 假如无法更改表的结构,或者不希望更改原有数据,可以在UNION查询中利用CONCAT函数来强制利用特定的字符集和校对规则:
SELECT CONCAT(column_name USING NCHAR_SEP) AS column_name
FROM your_table_name
UNION ALL
SELECT CONCAT(column_name USING NCHAR_SEP) AS column_name
FROM another_table;
       USING NCHAR_SEP指定了利用空字符('')作为分隔符来合并字符串。也可以根据必要选择其他符合的分隔符。
[*] 更改MySQL配置:
假如以上两种方法都不适用,还可以尝试更改MySQL服务器的配置来答应差别的字符集和校对规则。在my.cnf或my.ini配置文件中添加以下行:

collation-server = utf8_general_ci
character-set-server = utf8
然后重启MySQL服务器以使更改生效。
       请留意,这种方法会影响服务器上所有数据库和表的行为,因此请谨慎利用。
   在实际应用中,最好在开辟阶段就同一数据库中所有表和列的字符集和校对规则,以制止这类问题发生。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNI