MySQL 8.0 字符集问题导致报错

本文介绍了MySQL8.0中对字符集(如UTF8MB4)和排序规则(如utf8mb4_0900_ai_ci)的更新,强调了在升级时需注意的兼容性问题以及如何检查和调整数据库设置以提升性能。
摘要由CSDN通过智能技术生成

报错: ### Error querying database. Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,COERCIBLE)

MySQL 8.0引入了一些新的字符集和排序规则,并对现有的进行了改进。在MySQL 8.0中,字符集和排序规则的处理方式有所变化,主要包括以下几点:

  • UTF8MB4字符集默认设置: MySQL 8.0将UTF8MB4字符集作为默认字符集,以支持存储Unicode字符。这对于支持多语言的应用程序非常重要,因为UTF8MB4可以存储更广泛的字符范围,包括emoji表情符号等。

  • 默认排序规则的变化: MySQL 8.0中默认的排序规则由utf8mb4_general_ci改为utf8mb4_0900_ai_ci,以提供更准确的排序。

  • 新的字符集和排序规则: MySQL 8.0引入了一些新的字符集和排序规则,以满足不同语言和场景的需求。例如,utf8mb4_0900_ai_ci提供了更好的Unicode支持,适用于各种语言的排序。

  • 性能改进: MySQL 8.0对字符集和排序规则的实现进行了优化,提高了性能和效率。

当升级到MySQL 8.0时,需要注意这些变化,特别是对于已有的数据库和应用程序。确保你的应用程序和数据库配置与新的默认设置兼容,并根据需要进行调整。

  • 查询数据库版本
select version();
  • 查询数据库字符集
show variables like 'character%';
  • 查询表字符集
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE table_schema = 'table_schema' AND TABLE_COLLATION = 'utf8mb4_unicode_ci';
  • 批量生成修改表字符集为 utf8mb4 的SQL语句
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4;')
FROM information_schema.TABLES
WHERE table_schema = 'table_schema' AND TABLE_COLLATION = 'utf8mb4_unicode_ci';
  • 28
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逢生博客

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值