执行select * from sys.innodb_lock_waits报错
场景描述
执行如下SQL时,得到的结果不符合预期。
select * from sys.innodb_lock_waits
报错信息如下:
执行失败,失败原因:(conn=14690848) Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
原因分析
该报错通常出现在比较两个字符集编码不同的表、字段或数据库时。因为客户端连接时使用的字符集与数据库字符集不同导致报错。
解决方案
如果客户端使用了和数据库不同的字符集,需要调整客户端配置,使用相同的字符集连接数据库,或者在连上数据库后显式设置成对应的字符集,即可正常查询。
显式设置字符集的方法如下:
set collation_connection = utf8mb4_general_ci;
其中“utf8mb4_general_ci”为需要设置的字符集和排序规则。
当出现如下信息,表示字符集设置成功。
Query OK, 0 rows affected (0.00 sec)