关于`Can't initialize character set XXXX`的解决思路,求指导

当初拿thinkphp5写了一个项目,为了搞定emoji的问题,数据库字符集用了utf8mb4,在当时的服务器上跑的好好的。最近由于一些原因需要将整个系统转移到新的服务器上。但是当导入原有数据库,系统部署上去之后,试图运行却翻来覆去提示Can't initialize character set utf8mb4。。
我目前已经做过的一些尝试(虽然我现在还没处理好,但是一些思路我觉得其他人是可以借鉴的)

  1. 检查自己php系统数据库连接信息,正常

  2. 检查服务器版本,最开始发现装上的是5.5.2,而支持utf8mb4的mysql版本需求是>=5.5.3,升级之后,问题依旧

  3. 修改my.cnf使utf8mb4变为连接默认字符集(可以参考这篇文章),问题依旧

  4. 尝试服务器端mysql client跑SET NAMES utf8mb4,成功在mysql客户端内运行,但是问题依旧

  5. 尝试修改对应库的字符集,问题依旧(但不得不说我感觉这么做没什么用,提示这个应该是卡在连接上了而不是存取上

我已经做了如上尝试,但是问题还是依旧。不知道大家有什么可以指导的地方?

阅读 5.8k
2 个回答

谢瑶。 cmake加上-DWITH_EXTRA_CHARSETS=gbk,gb2312,utf8,ascii,utf8mb4即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题