关于SQLException: Illegal mix of collations (`utf8mb4_general_ci,IMPLICIT`)...错误
创始人
2024-12-26 05:09:59
0

希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

阅读指南

  • 开篇说明
  • 一、基础环境说明
    • 1.1 硬件环境
    • 1.2 软件环境
  • 二、报错信息
  • 三、最后

开篇说明

记录一个查询错误
场景:数据库之间某表复制移动;复制源数据库能正常使用,复制后的数据库在进行联表查询时出现的关于数据库排序规则相关的异常报错;

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境

1.1 硬件环境

MacOS Monterey 版本 12.6.8 Apple M1

1.2 软件环境

开发工具:Idea 2021navicat 15
编译环境:Java 1.8.0_171,mybatis 3.0+
数据库:mysql8.0

二、报错信息

Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation ‘=’
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1267]; Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation ‘=’; nested exception is java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation ‘=’

从异常错误信息,能定位到问题出错的点在于sql查询,错误相关是排序规则的问题;
【1】首先确认我们的数据库两边这块的配置是否是一致的;
在这里插入图片描述

【2】定位到我们的查询语句是哪句SQL;例如我这里是涉及多张表的联表查询;

SELECT 		a.id AS "id", 		a.create_by AS "createBy.id", 		a.create_date AS "createDate", 		a.update_by AS "updateBy.id", 		a.update_date AS "updateDate", 		a.remarks AS "remarks", 		a.del_flag AS "delFlag", 		a.materialId AS "materialId", 		m.model AS "model", 		a.machineNo AS "machineNo", 		m.materialname AS "materialName", 	    m.materialcode AS "materialCode", 	    m.voltage AS "voltage", 		m.unit AS "unit", 		s.status AS "status", 		a.isWaste AS "isWaste", 		a.maintenance_time AS "maintenanceTime", 		a.maintenance_content AS "maintenanceContent" 		FROM ossc_maintenance a 		INNER JOIN ossc_material m ON (m.id = a.materialId) 		INNER JOIN ossc_stock_detail s ON (a.machineNo = s.machine_no) 

通过命令查询两个数据库的相关表是否有存在数据排序的规则的冲突和不同;然后我们主要用命令修改有区别的表的排序规则即可;

// 查询所有与排序规则(collation)相关的系统变量 show variables like 'collation_%'; // 查看某个表(假设表名为table_name)的创建语句,包括其字符集(character set)和排序规则(collation)等详细信息 show create table ossc_stock_detail; // 修改了表的默认字符集和校对规则,并转换了表中所有列和数据的字符集和校对规则 ALTER TABLE ossc_material convert to CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; 

三、最后

【1】show variables like ‘collation_%’; 该命令在不同版本mysql或配置中返回的可能不同;如我这里是返回:
在这里插入图片描述
collation_connection:代表当前连接的排序规则。
collation_database:代表当前数据库的默认排序规则。
collation_server:代表服务器的默认排序规则。

其他可能的返回值:
character_set_connection:代表当前连接的字符集。
character_set_database:代表当前数据库的默认字符集。
character_set_results:代表查询结果的字符集。
character_set_server:代表服务器的默认字符集。
character_set_system:代表系统元数据的字符集(通常是utf8,且不可更改)。
collation_client:代表客户端的排序规则,这通常与character_set_connection和collation_connection相对应

【2】在做数据库的复制移动时,要注意两个库之间的排序规则和字符集;

相关内容

热门资讯

一分钟了解!金花房卡如何购买卡... 微信游戏中心:卡卡娱乐房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
正版授权!拼三张房卡怎么弄,微... 微信游戏中心:拼三张房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信拼三张房...
带你快速了解,微信金花链接房卡... 道游大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
科技实测!牛牛房卡游戏平台加盟... 蜜瓜大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
一分钟了解!游戏微信牛牛房卡新... 一分钟了解!游戏微信牛牛房卡新西部/新鸿狐大厅/微信链接房卡批发价Sa9Ix苹果iPhone 17手...
终于发现!微信牛牛房间卡在哪买... 微信游戏中心:牛牛房卡,添加微信【66336574】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”...
IA解析/斗牛房间怎么创建的新... 您好!微信新鸿运大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新鸿运大厅)大厅介...
正版授权!微信斗房卡多少钱一张... 微信游戏中心:炸金花房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信炸金花房卡...
科技实测!游戏微信牛牛房卡热玩... 科技实测!游戏微信牛牛房卡热玩吧/微信链接房卡购买渠道热玩吧是一款非常受欢迎的游戏,咨询房/卡添加微...
一分钟介绍使用,微信金花房卡到... 天王大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
正版授权!牛牛充值房卡人皇大厅... 正版授权!牛牛充值房卡人皇大厅//全网房卡低价售Sa9Ix苹果iPhone 17手机即将进入量产阶段...
终于发现!怎么创建炸金花房间房... 微信游戏中心:炸金花房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信炸金花房...
正版授权!微信拼三张房卡在哪里... 微信游戏中心:拼三张房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信拼三张房...
IA解析/金花房卡专卖店新神兽... IA解析/金花房卡专卖店新神兽/青龙大厅/一张房卡多少钱微信链接新神兽/青龙大厅是一款非常受欢迎的游...
详细房卡教程,链接金花房卡怎么... 新上游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
头条推荐!牛牛房卡怎么购买新蜜... 微信游戏中心:新蜜瓜大厅/随意玩房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心...
正规平台有哪些,牛牛房卡制作链... 新九游/飞鹰互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
终于发现!微信里面炸金花链接房... 微信游戏中心:炸金花房卡,添加微信【56001354】,进入游戏中心或相关小程序,搜索“微信炸金花房...
正版授权!牛牛房卡出售新天道/... 您好!微信新天道/皇豪互娱大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新天道/皇豪...
正版授权!微信牛牛链接版有房卡... 微信游戏中心:炸金花房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信炸金花房...