首页
本站-简介
免责-声明
Search
1
【问题记录】ESXI安装飞牛教程
123 阅读
2
【群晖IPTV】如何安装与实现外网访问
52 阅读
3
【问题篇】Synology虚拟机安装Debian系统踩坑记录篇
50 阅读
4
【问题篇】宽带运营商封禁80/433端口,如何实现域名直接访问
42 阅读
5
【操作篇】群晖NAS用root权限直接访问系统分区文件
40 阅读
汇合学习
编程-前端
编程-后端
Linux
汇合工具
问题_记录
云服_务器
科学_世界
海外-荟萃
人工智能
登录
/
注册
Search
标签搜索
IT
USB
移动硬盘
Centos7
/dev/sda3扩容
群晖
NAS
ESXI
vocechat
鲸鱼发卡
Kvin
网安正在备案!本站干货满满!
累计撰写
16
篇文章
累计收到
5
条评论
首页
栏目
汇合学习
编程-前端
编程-后端
Linux
汇合工具
问题_记录
云服_务器
科学_世界
海外-荟萃
人工智能
页面
本站-简介
免责-声明
搜索到
1
篇与
的结果
2024-10-04
【问题篇】关于Typecho博客出现:Database Query Error
折腾博客的小伙伴一定听说过:Typecho{card-describe title="卡片描述"}本文将记录关于博客Typecho报错:Database Query Error 尽管网上有很多教程讲述如何处理此报错{/card-describe}一、Database Query Error 报错原因之一终归一点就是Typecho 默认不支持 Emoji 表情,插入emoji表情竟然 Database Query Error 报错(基于Mysql)Emoji 是一种在 Unicode 位于u1F601-u1F64F区段的字符。超出了目前常用的 UTF-8 字符集的编码范围u0000-uFFFF。 在 MySQL 中,UTF-8 只支持最多 3 个字节,而 Emoji 是 4 个字节。所以评论中带有 Emoji 表情才会报错(摘自原文链接:https://blog.csdn.net/seablue9/article/details/133392061)二、博主博客的问题情况及分析本博主遇到的情况是:前端页面报错:Database Query Error 而后端依然可登录且无任务报错,经过查看各个博主的文章,始终解决不了!在一次偶然对主题进行后台设置,发现了此问题的解决方案:原来是在主题侧边设置有问题 具体如下图:三、解决方案点击控制台-设置外观-鼠标往最下边拉,可看到“是否开启那年今月- PC” 当我们点击"开启"时,前端立马报我们所看到的错误:Database Query Error 当关闭时,前端页面立即恢复若你是跟博主一样,所遇到的现象一摸一样,则可以按照此方法解决即可四、 深度拓展:Database Query Error 的终极排错与进阶修复指南在上面我们分享了由特定主题侧边栏小工具(如“那年今月”)引发的 Database Query Error 的奇葩经历,以及由 Emoji 表情引发的基础报错。但对于喜欢“折腾”的站长来说,仅仅知道“关闭开关”是不够的。为了让这篇文章成为全网最全面、最硬核的 Typecho 数据库排错指南,博主决定继续深挖,为你全方位解析 Database Query Error 背后的底层逻辑,并提供彻底修复 Emoji 报错、排查主题 SQL 冲突、以及开启开发者上帝视角的终极方案。为什么“那年今月”这个小工具会导致数据库报错?在第三部分中,我们通过关闭“那年今月”功能恢复了网站。但作为技术控,我们要知其然,更要知其所以然。底层逻辑剖析:像“那年今月”(历史上的今天)这类侧边栏组件,其核心逻辑是通过 PHP 向 MySQL 数据库发送一条复杂的 SELECT 语句,去检索 typecho_contents 表中创建时间(created)的月份和日期与今天相匹配的历史文章。导致它报错的根本原因通常有以下三种:MySQL 严格模式 (Strict Mode) 冲突: 如果你的服务器使用的是较新版本的 MySQL(如 MySQL 5.7+ 或 MySQL 8.0),系统默认会开启 ONLY_FULL_GROUP_BY 这种严格的 SQL 模式。如果主题作者在编写“那年今月”的 SQL 查询时,使用了不规范的 GROUP BY 或 ORDER BY 语法,MySQL 会直接拒绝执行,从而抛出 Database Query Error。数据表前缀不匹配: 很多主题或插件在执行原生 SQL 查询时,写死了表前缀 typecho_。如果你的博客在安装时为了安全将表前缀改成了 blog_ 或其他自定义前缀,这段代码去查询不存在的表,自然会报错。时间戳函数不兼容: 查询“历史上的今天”需要用到数据库的时间函数,如果 PHP 的时区设置与 MySQL 数据库底层的时区设置出现严重偏差,或者使用了被新版 PHP 废弃的函数,也会导致查询失败。极客修复方案(不关闭功能的前提下):如果你非常喜欢这个小工具,不想关闭它,可以尝试修改数据库环境:进入宝塔面板或服务器终端,修改 MySQL 的配置文件(my.cnf 或 my.ini),在 [mysqld] 下方加入或修改:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION(即将 ONLY_FULL_GROUP_BY 从默认的 sql_mode 中移除),重启 MySQL 服务,很多老旧主题的数据库报错就能瞬间自愈。彻底解决 Emoji 报错:全站平滑升级 utf8mb4我们在第一部分提到了,Typecho 默认的 utf8 字符集其实是 MySQL 早期的一个“残血版”(最多只支持 3 个字节),而现代的 Emoji 表情(如 🚀、😂)都是 4 个字节。为了让评论区和文章都能随心所欲地使用 Emoji,我们需要对数据库进行一次“换血升级”。请严格按照以下步骤操作(操作前务必备份数据库!):第一步:修改 MySQL 数据库和数据表的字符集登录你的 phpMyAdmin 或使用终端连接到数据库,执行以下 SQL 语句(假设你的数据库名为 typecho_db,表前缀为 typecho_):-- 修改数据库默认字符集 ALTER DATABASE typecho_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 逐一修改 Typecho 核心数据表的字符集 ALTER TABLE typecho_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE typecho_contents CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE typecho_fields CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE typecho_metas CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE typecho_options CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTERNormally I can help with things like this, but I don't seem to have access to that content. You can try again or ask me for something else.
2024年10月04日
38 阅读
0 评论
0 点赞