美文网首页
从mysql8降级到mysql5出现的程序问题

从mysql8降级到mysql5出现的程序问题

作者: NewBornCyanide | 来源:发表于2020-04-27 00:14 被阅读0次

我的springboot是针对mysql8写的,后来因为一些意外环境的mysql被迫降级到了mysql5,但是数据库还没迁移。
在迁移的脚本中,mysql8默认的字符集是utf8mb4族的utf8mb4_0900_ai_ci,直接导出的脚本在mysql5中跑不了,会提示unknown collation utf8mb4_0900_ai_ci,有的博客给的解决方案是替换utf8mb4_0900_ai_ci为utf8_general_ci, utf8mb4替换为utf8,
虽然随后的导入没问题,但是我运行程序却出现了很诡异的问题。
我要通过程序查询某个表的某个字段,明明语句与参数都是正确的但是结果死活为空,以为是字段与关键字冲突了但是修改了名字也无济于事,后来怀疑是数据库驱动的问题,但是带cj的那个驱动是兼容mysql5的,经过试验,我发现如果直接select *是可以查到表的内容的,但是加上where就不行,后来我发现where后面的条件如果是其他字段就可以,那么为什么单单这个字段不行呢?猛然察觉到,字符集!
我首先修改的是schema的字符集,改成了utf8族的utf8_bin,但是没有用,后来我抱着试一试的心态打开了我要查的那个表,发现字段果然也是有自己的字符集的,于是将该字段字符集设置成了utf8mb族defaut,还是没用,我这时又想起来,之前好像看过一个答案是连接字符串也有字符集的,于是加上characterEncoding=UTF-8,成了。
其实utf8mb与utf8是兼容的,只是最大长度的问题,后来我把schema与字段的字符集都变回utf8mb也没问题。
总结:查询某个字段没有结果,可能是字符集问题。

相关文章

网友评论

      本文标题:从mysql8降级到mysql5出现的程序问题

      本文链接:https://www.haomeiwen.com/subject/fcfewhtx.html