在Navicat客户端上面执行SQL报错

SQL语句:

WITH RECURSIVE transfer  (start_station, stop_station, stops, path) AS (
SELECT station_name, next_station, 1, CAST(CONCAT(line_name, ':', station_name , ' -> ', line_name, next_station) AS CHAR(1000))
FROM nanchang_metro WHERE station_name = '艾溪湖西'
UNION ALL
SELECT p.start_station, e.next_station, stops + 1, CONCAT(p.path, '->', e.line_name, e.next_station)
FROM transfer p
JOIN nanchang_metro e
ON p.stop_station = e.station_name AND (INSTR(p.path, e.next_station) = 0)
)
SELECT * FROM transfer WHERE stop_station ='沥山';

报错信息:

> 1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation 'instr'
> 时间: 0s

我一开始也以为是自己的库,表,字段,排序规则不一致导致的,但是不是

这是库:

这是表和字段:

CREATE TABLE `nanchang_metro` (
`station_id` int NOT NULL AUTO_INCREMENT,
`line_name` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
`station_name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`next_station` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
`direction` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`station_id`)
) ENGINE=InnoDB AUTO_INCREMENT=196 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

然后我检查了Collation变量,发现Connection设置的规则,有是0900ci

mysql> show variables where Variable_name like 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.01 sec) mysql>

然后百度搜怎么配置这个connection

在my.ini配置文件中已经如下声明具体的规则和字符集:

[mysqld]
# mysql所在的目录
basedir=E:\mysql-8.0.23-winx64 # mysql 数据库存储的目录
datadir=E:\mysql-8.0.23-winx64\data\ # mysql服务端默认使用的字符集
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4 COLLATE server=utf8mb4_general_ci'
# 默认使用的存储引擎
default-storage-engine=INNODB # mysql服务端的端口号 默认3306
port=3308 # 配置二进制日志格式
binlog_format = MIXED # 允许导入导出
secure_file_priv = '' [mysql]
# mysql客户端默认使用的字符集
default-character-set=utf8mb4 [client]
default-character-set=utf8mb4

重启服务后确实能指定collation_server

但是connection就是指定不了,就是很奇怪

然后我一想,连接的是Navicat来操作,是不是Navicat配置的问题
果然啊,一找才知道TNND,Navicat自动配置的是按照MySQL默认的排序规则走的

更改成UTF-8:

再次配置查看,就发现都一致了

mysql> show variables where Variable_name like 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |

+----------------------+--------------------+
3 rows in set (0.01 sec) mysql>

【MySQL】Navicat踩坑:Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation 'instr'的更多相关文章

  1. mysql调用存储过程出现Illegal mix of collations错误

    执行sql语句正常 执行存储过程 异常 提示 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMP ...

  2. MySQL查询时报错Illegal mix of collations

    开发十年,就只剩下这套架构体系了! >>>   1.具体场景 两张表分别为: CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AU ...

  3. 【mysql】[Err]1267 - Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=

    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  4. 彻底解决phpcms v9升级后,文章发布出现: Mysql 1267错误:MySQL Error : Illegal mix of collations 解决办法

    彻底解决phpcms v9升级后,文章发布出现: MySQL Query : SELECT * FROM `withli_a`.`v9_keyword` WHERE `keyword` = '吼吼' ...

  5. MySQL replication illegal mix of collations

    MySQL replication case 一则 转载:http://www.vmcd.org/2013/09/mysql-replication-case-%E4%B8%80%E5%88%99/ ...

  6. 解决Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER

    今天在用java与mysql数据库时发现Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER ...

  7. Illegal mix of collations for operation 'like' while searching with Ignited-Datatables

    Stack Overflow Questions Developer Jobs Tags Users   Log In Sign Up Join Stack Overflow to learn, sh ...

  8. MySQL Error: Illegal mix of collations for operation 'concat'

    在使用concat连接字符串时出现错误:MySQL Error: Illegal mix of collations for operation 'concat' 原因:字段操作默认为UTF8的编码, ...

  9. Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

    MySQL字符串比较bug: select * from table_a a left join table_b b on a.field_a = b.field_b   error: Illegal ...

  10. mysql 客户端连接报错Illegal mix of collations for operation

    服务端用的是utf-8,客户端工具打开表和视图是会报Illegal mix of collations for operation错误,经排查,可以采用以下语句解决 SET character_set ...

随机推荐

  1. IMX6ULL基本环境搭建

    基本环境搭建 1 交叉编译工具 在虚拟机中安装交叉编译工具,为后续开发做准备. 1.1 工具版本 工具版本:Linaro Releases 当前虚拟机为64位系统,因此下载64位系统的工具: $ un ...

  2. ts interface

    在TypeScript中,接口(interface)用于定义对象的结构,可以描述对象的属性.方法等.下面是一个简单的例子,演示如何使用 TypeScript 接口: // 定义一个接口表示一个人的信息 ...

  3. 地址栏hash模式以?问号分割也可以分割的

    可以看到href里面hash没有? 但是还是以?分割了 就很不明白 但是我就indexof判断有没有? 再进行下一步逻辑 这里记录一下坑

  4. springboot3时代创建springboot2程序项目

    springboot3时代创建springboot2程序项目 目前,IDEA,springboot 官网,都不能创建基于JDK8(JDK1.8)的springboot程序了. 解决办法: 1. 先在官 ...

  5. 解密Prompt系列31. LLM Agent之从经验中不断学习的智能体

    Agent智能体的工作流可以简单分成两种:一种是固定的静态工作流,一种是智能体自主决策的动态工作流. 静态流程的Agent举几个例子,例如新闻热点追踪推送Agent,每日新论文摘要总结Agent,它们 ...

  6. JavaScript模块化笔记

    JavaScript模块化笔记 一个模块就是一堆被封装到一个文件当中的代码,并使用export暴露部分代码给其他的文件.模块专注于一小部分功能并与应用的其他部分松耦合,这是因为模块间没有全局变量或共享 ...

  7. Java连接mySql——简单JDBC连接数据库

    利用JDBC开发数据库 经典应该用框架:      第一步,加载JDBC数据库驱动程序(不同的数据库有不同的数据库驱动,所以在连接数据库之前,需加载驱动)     格式:     String dri ...

  8. Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?

    a.Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能. b.Mybatis 提 供 了 9 种 动 态 sql 标 ...

  9. 妙用OSGraph:发掘GitHub知识图谱上的开源故事

    1. 何为OSGraph? OSGraph (Open Source Graph) 是一个开源图谱关系洞察工具,基于GitHub开源数据全域图谱,实现开发者行为.项目社区生态的分析洞察.可以为开发者. ...

  10. zabbix---监控Oracle12c数据库

    使用插件:orabbix用于监控oracle实例的zabbix插件 orabbix插件下载地址:http://www.smartmarmot.com/product/orabbix/download/ ...