作者在将博客迁移回Typecho平台后,安装友链插件Links时遇到无法访问的问题。经过排查,发现插件未能成功创建数据库表。作者通过手动执行SQL语句创建表,最终解决了问题,并记录了此次经验。
前几天学习数据库瞎操作搞坏了博客数据库还没备份,导致博客没办法访问了,正好当时看到Wordpress的一款主题Farallon被大佬Sun移植到了Typecho平台,看大佬的博客还蛮好看的,遂又将自己的博客换回了Typecho。
Typecho有一个著名的友链插件Links,这个插件被很多主题采用来输出友链页面,Farallon这个主题也不例外。我记得我在首次使用Typecho的时候就安装过这个插件,当时安装就遇到了难题,插件安装和启用后,访问Links的设置页面和博客的友链页面均无法访问,提示网络协议错误,像这样:
首次遇到时忘记了怎么搞了搞后来可以使用了,也没有记录,这次安装遇到同样的问题又傻了眼,于是我又开始了问题探索,首先问了AI,AI结果如下,在逐一排查后,并没有解决我的问题。
接着我开始百度搜索看有没有大佬遇到同样问题的,翻了好几页都只能看到Links插件推荐或者说有漏洞的文章,但有一篇文章提到重启Links插件时遇到报500错误,在这篇文章中他提到了数据库问题,真是一语点醒梦中人,我迅速去查看我的数据库,发现我在开启Links的时候提示“建立友情链接数据表”成功,但实际上并没有创建,虽然不清楚我遇到的错误是不是同样问题,不过本着摸石头过河的态度,得尝试一下。
考虑一下为什么插件没有创建成功数据表,在我的认知里应该只有权限错误和SQL语句错误这两个问题可以导致创建失败。首先,权限应该是不能有问题的,毕竟博客初始化时创建表是正常的,都是用的同一个用户,那么就需要从SQL语句着手了,我想既然插件要执行SQL语句,不管写在哪里,插件目录里肯定得存放相关SQL,解压插件压缩包后一眼就看到了SQL文件:
插件要执行的SQL语句在我看来是没问题的,如果继续找,只能看看最后一行的%charset%
是从哪里传传过来的了,不过我确实不懂代码,没法找他的逻辑,我开始想另一个方法,既然插件自动创建失败了,那我手动创建是不是行呢,于是我复制了语句,将ENGINE
改成了InnoDB
,CHARSET
指定为utf8mb4
,创建表成功后,我到Typecho里再次打开Links插件,哦豁,可以打开访问了!
Nice Job!虽然最后我也没探索出来具体是为什么创建失败,不过好在手动创建后解决了这个问题,这次长个记性,水个文章记录一下吧!
评论区(暂无评论)