首页  >  问答  >  正文

php - 关于`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. 尝试修改对应库的字符集,问题依旧(但不得不说我感觉这么做没什么用,提示这个应该是卡在连接上了而不是存取上

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

PHP中文网PHP中文网2659 天前682

全部回复(1)我来回复

  • 迷茫

    迷茫2017-06-13 09:23:30

    如果你还是5.5版本,则需要重新cmake或者指定字符集目录。该问题官方文档:https://dev.mysql.com/doc/ref...

    回复
    0
  • 取消回复