首页 信息互联🚀

最近写文章的时候用到了emoji,发现报错:Database Query Error

解决办法

1、进入数据库,直接运行下列语句:

alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_options convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_general_ci;
alter table typecho_users convert to character set utf8mb4 collate utf8mb4_general_ci;

2、修改数据库的配置文件

网站根目录数据库配置文件config.inc.php,大约在60行

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  ...
  'charset' => 'utf8mb4',  // 将原来的utf8修改为 utf8mb4
  ...
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);


文章评论

    雪山凌狐 访客ChromeWindows
    6天 前 回复

    亲测成功,感谢!

    yitzu 访客ChromeWindows
    2020-10-1 13:37 回复

    怎么进入数据库运行啊,进入数据库在哪运行啊

    小邯郸 访客ChromeWindows
    2020-08-27 19:40 回复

    这个原因就是因为utf8在mysql里面不是真正的utf8,这个只能保存3个字节,而utf8mb4是后面更新的,能保存四个字节,而且官方也没有更新这个的说明。麻蛋,我开发选的utf8,保存表情死都保存不上。最后才懂。搞我。

    571 访客ChromeWindows
    2020-03-11 9:47 回复

    我这么做了也没用呀,用的chrome,这么弄了还是方框

      Veen Zhao 站长ChromeWindows
      2020-03-11 9:57 回复

      其他浏览器正常吗?先排查是不是浏览器问题

        571 访客ChromeWindows
        2020-03-15 16:29 回复

        换了浏览器也一样的显示不出来