原文链接:前往Aurora.歆の个人主页
主题作者地址:robes.xin
适用于通过宝塔面板docker商店部署的typecho,安装robes主题出现的明显问题
先来看第一个问题
1.留言板Database Query Error
我们正常部署好主题,基本信息填好,在独立页面添加一个名为留言的页面,打开后会出现Database Query Error的字样
接下来我们去到网站根目录,打开/data/usr/theme/robes/目录,找到config.inc.php这个文件
在第一行添加如下代码:
define(‘__TYPECHO_DEBUG__’, true);
这个代码用于开启调试模式(Debug Mode)
再次打开留言板页面,发现页面中输出了以下信息:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘zbfy2zrbfgwpwswt.typecho_comments.mail’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Typecho\Db\Adapter\SQLException: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘zbfy2zrbfgwpwswt.typecho_comments.mail’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by in /app/var/Typecho/Db/Adapter/Pdo.php:111
Stack trace:
#0 /app/var/Typecho/Db.php(391): Typecho\Db\Adapter\Pdo->query(‘SELECT `author`…’, Object(PDO), 1, ‘SELECT’, ‘typecho_comment…’)
#1 /app/var/Typecho/Db.php(424): Typecho\Db->query(Object(Typecho\Db\Query))
#2 /app/usr/themes/robes/guestbook.php(37): Typecho\Db->fetchAll(Object(Typecho\Db\Query))
#3 /app/var/Widget/Archive.php(1418): require_once(‘/app/usr/themes…’)
#4 /app/var/Typecho/Router.php(99): Widget\Archive->render()
#5 /app/index.php(23): Typecho\Router::dispatch()
#6 {main}
简单解读一下报错信息
核心错误是:Expression #2 of SELECT list is not in GROUP BY clause
查询使用了 GROUP BY,但 SELECT 列表中包含一个非聚合列 typecho_comments.mail,而这个列没有出现在 GROUP BY 子句中。
还有一个就是MySQL 规则:当 sql_mode 包含 ONLY_FULL_GROUP_BY 时,要求 SELECT 中的每一列要么是 GROUP BY 的一部分,要么被聚合函数(如 MAX()、MIN()、SUM())包裹,否则 MySQL 会拒绝执行并报错。
#2 /app/usr/themes/robes/guestbook.php(37): Typecho\Db->fetchAll(Object(Typecho\Db\Query))
仔细看这行会发现,问题在guestbook.php的第37行
这行执行了一个数据库查询,这个查询包含 GROUP BY 且选中了 mail 字段,但没有在 GROUP BY 中列出。
解决方法也很简单
打开data/usr/theme/robes/guestbook.php这个文件,找到37-46行
将内容替换为如下代码
$topCommentersQuery = $db->select(
‘author’,
array(‘ANY_VALUE(mail)’ => ‘mail’), // 这里将 mail 用 ANY_VALUE 包裹
array(‘COUNT(coid)’ => ‘cnt’)
)
->from($prefix . ‘comments’)
->where(‘status = ?’, ‘approved’)
->group(‘author’) // 分组保持不变
->order(‘cnt’, \Typecho\Db::SORT_DESC)
->limit(5);
(由于我在这里加了第二个问题的代码,所以这里显示是42行开始)
保存文件,刷新留言板即可正常使用
2.评论发送后无法显示
留言板修好了,发条留言吧!
诶?!怎么发布成功后不显示啊???
不是哥们,文章发评论也不显示啊????
这个问题我在检查comments.php这个文件没发现啥大的问题(因为熟练度不够,这个问题丢给Ai了)
某Ai给了我一串代码
<?php
if (isset($_GET[‘error’])) {
echo ‘<div style=”color:red;”>错误代码:’ . htmlspecialchars($_GET[‘error’]) . ‘</div>’;
}
?>
这行代码添加在路径为/data/usr/theme/robes/里的comments.php
将这行代码添加在最上方,保存刷新页面即可
留言板和文章评论区同样适用
主题还有一个问题就是吞评论,这个问题据说作者自己都没解决。。。



评论(0)
暂无评论