当前位置: 首页 > article >正文

mysql查询报错java.sql.SQLException: Illegal mix of collations for operation ‘UNION‘

1.场景

需要写一个sql,需要合并 从四张表查询查询出来的结果,需要用到 UNION ALL 对查询结果进行合并

2.sql

-- 从 unit 表中查询
select id, name, '1' as type
from unit
where name like concat('%', #{name}, '%')

UNION ALL

-- 从 system 表中查询
select id, name, '2' as type
from system
where name like concat('%', #{name}, '%')

UNION ALL

-- 从 equipment 表中查询
select id, name, '3' as type
from equipment
where name like concat('%', #{name}, '%')

UNION ALL

-- 从 measuring_point 表中查询
select id, name, '4' as type
from measuring_point
where name like concat('%', #{name}, '%')

3.查询报错

java.sql.SQLException: Illegal mix of collations for operation 'UNION'

4.检查4张建表语句的排序规则是否一致

SHOW FULL COLUMNS FROM unit;
SHOW FULL COLUMNS FROM system;
SHOW FULL COLUMNS FROM equipment;
SHOW FULL COLUMNS FROM measuring_point;

CREATE TABLE `template_config_unit` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `template_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '机组模板名称',
  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '编码',
  `type` int DEFAULT NULL COMMENT '机组类型(1:锅炉专业, 2:汽机专业, 3:电气专业, 4:环化专业)'
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=227 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='机组表';

重点关注

ENGINE=InnoDB AUTO_INCREMENT=227 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci 

5.本人遇到的问题 是排序规则不一致造成的

6.解决方案

修改表的排序规则

ALTER TABLE unit CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE system CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE equipment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE measuring_point CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

7.最后

问题解决


http://www.kler.cn/a/463153.html

相关文章:

  • leetcode hot100_part08_二叉树(完)
  • word文档中的文档网格——解决相同行间距当显示出不同行间距的情况
  • VMware去虚拟化
  • JavaWeb开发(五)Servlet-ServletContext
  • 【深度学习基础之多尺度特征提取】多尺度卷积神经网络(MS-CNN)是如何在深度学习网络中提取多尺度特征的?附代码(二)
  • 推理加速:投机采样经典方法
  • 【智行安全】基于Synaptics SL1680的AI疲劳驾驶检测方案
  • 原生js封装ajax请求以及css实现提示效果和禁止点击效果
  • Android笔试面试题AI答之Android基础(9)
  • 扩充vmware磁盘大小以及分区
  • 细讲前端工程化
  • 使用SDL2搭建简易LVGL模拟器
  • 香港 GPU 服务器托管引领 AI 创新,助力 AI 发展
  • Ubuntu 上高效实现 Texlive 安装和管理
  • 关于flinkCDC监控mysql binlog时,datetime类型自动转换成时间戳类型问题
  • Kali 自动化换源脚本编写与使用
  • Mac M2 Pro安装MySQL 8.4.3
  • Django中创建自定义命令发送钉钉通知
  • ARM架构服务器安装部署KVM虚拟化环境
  • LLaMA 2开放基础和微调聊天模型
  • 自定义luacheck校验规则
  • spring boot通过文件配置yaml里面的属性
  • 从数据映射到文件生成:一个R语言实践案例
  • 自己电脑搭建个人知识库,一般电脑也能玩(支持通义千问、GPT等)。
  • VSCode 插件开发实战(十六):详解插件生命周期
  • selenium(三)