thinkphp设置DB_CHARSET为utf8mb4

tp3.2.3数据库配置 'DB_CHARSET'=> 'utf8mb4',执行报错。如下

SQLSTATE[HY000] [2019] Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)
错误位置

FILE: /data1/www/htdocs/733/ecampus/3/ThinkPHP/Library/Think/Db/Driver.class.php  LINE: 109

如果不用tp,使用原生的sql ‘set names utf8mb4’ 执行没问题。
到底哪里出错了 求解决!谢谢!

阅读 7k
3 个回答

我也遇到类似的问题,我的更奇怪
线上和本地都是TP3.2,本地配库配置 'DB_CHARSET'=> 'utf8mb4',没有问题,线上就不行。(线上php5.6,线下php7)
线上修改DB连接用 mysql:host=localhost;dbname=db_demo;charset=utf8mb4 依然报错,改用 PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4" 就成功了。
ps: 一直用laravel,旧的项目用TP。总之放弃TP,方能归一,?。

帮帮我!我顶!

应该是你的配置没生效 试试直接改convention.php

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