• 搜索
  • 夜间模式
    ©2026  岚峰 Theme by OneBlog

    岚峰博客

    搜索
    标签
    # 记事 # 维修 # plc # 学习 # 记录 # 文字 # 博客 # 小说 # 酒 # 闲话
  • 首页>
  • 杂乱无章>
  • 正文
  • 终于把typecho升级成功

    2026年01月23日 30 阅读 0 评论 2211 字

    在经历了一次博客数据自我消亡之后(其实就是没续费,因为我以为以后不会继续写。)
    后面又经历想搭建博客,到处找网盘的备份。不过还是找到了一部分大概是2008-2012年。之后就把博客的数据定期备份保护的很好。
    这次typecho破天荒的升级到了1.30,我以为一切都会很顺利,但是过程真是曲折尤其对我会更难一些。
    因为我是一点都不懂,只会把备份还原点点鼠标。成功不成功就是天意了。这次偏偏就是曲折,首先按照官方的操作流程,上去写好数据库的数据后就错误,显示数据库有admin,然后我有曲线救国直接进后台,但又显示服务器错误,但又发现可以访问插件设置页面。
    我以为是我的插件有问题,又手打进了插件页面关闭了所有插件还是老样子。
    我又换到默认主题,还是一样这就让我不知所措了,就开始了ai,然而ai也没有给我一个什么好的解决办法。只是在用ai告诉我屏蔽报错,在config.inc.php配置里面添加了屏蔽报错的代码才正常。但又面临新的问题就是用了屏蔽代码后,评论全部不显示了。这时候ai才告诉我我数据库有问题。
    然后就不断的反复的来回还原备份,折腾了几个小时。
    还是没有进展,最后在用默认主题的时候发现右边挂件栏有错误的代码,在多少行里面用ai的办法这才又修复,处理完这个问题ai告诉我百分百我的数据库有问题。
    Warning: Trying to access array offset on value of type null in : Trying to access array offset on value of type n…/www/wwwroot/lag.la/var/Widget/Base/Comments.php on line 478
    欢迎加入 Typecho 大家族

    就开始解决这个问题

    问题原因分析

    这个问题通常发生在:

    1. 评论关联的文章已被删除
    2. 数据库数据不一致
    3. 缓存数据问题

    建议:修复代码后,可以检查数据库中是否有 cid(评论所属文章ID)不存在于 contents 表中的评论记录。

    验证修复

    修复后,你可以在页面模板中添加调试信息来验证:

    <?php if (!$this->parentContent): ?>
        <!-- 评论关联的文章不存在 -->
    <?php endif; ?>

    这样修复后,即使 $this->parentContent 为 null,也不会再出现数组访问错误,而是会使用默认的评论文本 $this->text。

    然后又出现

    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key 'name' 升级过程中出现的

    问题总结

    1. 数据库表都正常(OK)
    2. 有1个孤立评论(可能是被删除文章的评论)
    3. 有1个无效的关系记录(可能是被删除文章的分类关系)

    解决方案

    第一步:清理孤立数据

    -- 1. 删除孤立评论(没有对应文章的评论)
    DELETE FROM typecho_comments 
    WHERE cid NOT IN (SELECT cid FROM typecho_contents);
    
    -- 2. 删除无效的关系记录
    DELETE FROM typecho_relationships 
    WHERE cid NOT IN (SELECT cid FROM typecho_contents) 
       OR mid NOT IN (SELECT mid FROM typecho_metas);
    
    -- 3. 验证清理结果
    SELECT COUNT(*) as orphaned_comments FROM typecho_comments c 
    LEFT JOIN typecho_contents p ON c.cid = p.cid 
    WHERE p.cid IS NULL;
    
    SELECT COUNT(*) as invalid_relations FROM typecho_relationships r
    LEFT JOIN typecho_contents c ON r.cid = c.cid
    LEFT JOIN typecho_metas m ON r.mid = m.mid
    WHERE c.cid IS NULL OR m.mid IS NULL;

    然后ai又给我写了个升级脚本,经过几次修改后 终于完美升级。
    但我检查
    1 MyISAM utf8mb3_general_ci 9.2 KB 'database' => 'root',
    'engine' => 'InnoDB',
    'sslCa' => '',一个是数据库 一个是config的配置文件 这样是否能行
    我的数据库是myisam config配置文件写的是innodb这不转换过来我晚上都得失眠。
    然后又是一通折腾。
    谁叫我是一个完美主义者呢?

    本文著作权归作者 [ 岚峰 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    Copyright©2026  All Rights Reserved.  Load:0.011 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。