生成环境的一个项目出现了异常,查看日志提示:
System.NotSupportedException: Character set 'utf8mb3' is not supported by .Net Framework.
但非常奇怪的是,数据库和表都没有改过,而且使用的是 utf8mb4 编码。先搜索引擎找一下有没有相同的问题,遗憾的是,大部分都是修改表字符集,也就是修改字符集和排序为utf8mb4。显然不对,回头看代码,定位到报错的SQL,里面用到了两个内置函数SQL_CALC_FOUND_ROWS
和FOUND_ROWS
,把这两个函数删掉就恢复正常。但开发环境也使用的是这两个函数,没有任何问题呀。一时间有点懵,到底是哪出了问题。冷静下来后进行问题的分析,在开发环境没有问题,到了生成环境出现问题,要么是程序的环境出了问题,要么是数据库环境出了问题。赶紧去检查一下,开发环境使用的是MySQL 8.0.26,生成环境使用的是MySQL 8.0.29。尝试将MySql.Data
升级到8.0.29后。问题解决。