导航菜单
登录 注册

需求

刚到手就发现 Spimes主题不能用互动读者。

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xmp.xmp_comments.authorId' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

说真的,对于不兼容 MySQL 8 这件事,搞得我对这个主题都没什么兴趣了。我们公司一破国企都主用 MySQL 8了现在。

解析

解决方式有两个,一个是关闭只允许 Full Group By,另一个方法就是规范SQL查询语句,我选择当然是规范SQL查询语句啊。

代码

把SQL查询语句改成下面这个就行

Typecho_Db::get()
            ->select('count(author) AS count', 'mail', 'any_value(author) as author', 'any_value(authorId) as authorId')
            ->from('table.comments')
            ->where('created > ?', $period)
            ->where('status = ?', 'approved')
            ->where('type = ?', 'comment')
            ->group('mail')
            ->order('count', Typecho_Db::SORT_DESC)
            ->limit(4);

后记

同时顺带一提这主题说是显示30天内互动最多的读者,结果代码里时间写错了

Typecho 更换域名、修改域名
上一篇
Typecho 免插件统计浏览次数,输出热门文章
下一篇
广告