You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据库、表、列排序规则一致仍出现排序规则混合错误求助

解决MySQL排序规则不兼容错误(1267)

出现1267: Illegal mix of collations错误,即使数据库、表、列的排序规则都是utf8mb4_unicode_ci,大概率是以下几个遗漏点:

  • PHP与MySQL的连接字符集未正确设置
    这是最常见的原因:即使库表列都是utf8mb4编码,PHP连接MySQL时如果没指定utf8mb4字符集,驱动会默认使用utf8(实际是utf8mb3),导致SQL参数的排序规则被识别为utf8_general_ci,和表列的utf8mb4_unicode_ci冲突。
    解决方式:

    • 用PDO的话,在DSN中添加charset=utf8mb4,例如:mysql:host=localhost;dbname=your_db;charset=utf8mb4
    • 用mysqli的话,连接后执行mysqli_set_charset($conn, 'utf8mb4');,再额外执行SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;确保排序规则一致
  • json_decode后的字符串传递时未保证编码一致性
    json_decode返回的是UTF-8编码字符串,但如果PHP环境存在隐性转码(比如默认字符集不是UTF-8),可能导致参数编码异常。可以用mb_detect_encoding()检查字符串编码,确保是UTF-8后再绑定参数。

  • 参数绑定类型不正确
    绑定SQL参数时,确保使用字符串类型(比如PDO的PDO::PARAM_STR),避免驱动自动转换时出现编码或排序规则的偏差。

  • 验证连接的实际排序规则
    执行SQL语句SHOW VARIABLES LIKE 'collation_connection';,查看当前连接的排序规则。如果结果是utf8_general_ci,说明连接设置未生效,需要重新调整连接配置。

内容的提问来源于stack exchange,提问作者Kenny Wyland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:12:41