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

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

MySQL在利用UNION查询时或者创建视图时报:非常:SQL error: #1271 - Illegal mix of collations for operation ‘UNION’
这个错误意味着在UNION查询中的两个或多个列利用了差别的字符集或校对规则,导致无法举行精确的合并操纵。
字符集和校对规则是用于决定怎样比较和排序字符串的规则。差别的字符集和校对规则可能导致相同的字符串在某些情况下被视为相同,而在其他情况下被视为差别。因此,当UNION查询中的列利用差别的字符集或校对规则时,MySQL无法确定怎样精确地合并这些列的效果,从而引发了#1271错误。

检察表的具体信息发现字符范例的字段的Collation差别

办理:



  • 同一字符集和校对规则
    1. ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    复制代码

  • 假如无法更改表的结构,或者不希望更改原有数据,可以在UNION查询中利用CONCAT函数来强制利用特定的字符集和校对规则:
    1. SELECT CONCAT(column_name USING NCHAR_SEP) AS column_name
    2. FROM your_table_name
    3. UNION ALL
    4. SELECT CONCAT(column_name USING NCHAR_SEP) AS column_name
    5. FROM another_table;
    复制代码
          USING NCHAR_SEP指定了利用空字符('')作为分隔符来合并字符串。也可以根据必要选择其他符合的分隔符。
  • 更改MySQL配置:
    假如以上两种方法都不适用,还可以尝试更改MySQL服务器的配置来答应差别的字符集和校对规则。在my.cnf或my.ini配置文件中添加以下行:
    1. [mysqld]
    2. collation-server = utf8_general_ci
    3. character-set-server = utf8
    复制代码
    然后重启MySQL服务器以使更改生效。
           请留意,这种方法会影响服务器上所有数据库和表的行为,因此请谨慎利用。
   在实际应用中,最好在开辟阶段就同一数据库中所有表和列的字符集和校对规则,以制止这类问题发生。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表