前言
新年第一天,调整网站模板的时候关闭了友情链接插件,当再次启用时候发现提示错误信息:
数据表建立失败,友情链接插件启用失败。错误号:42S01
当时就一脸懵逼了...
后面百度一下发现是友情链接模块未判断数据库存在所以才会出现错误。
故障排除流程
1.下图就是关闭Links友情链接插件后再启动的报错。
2.进入宝塔面板,usr/plugins/Links目录中找到Plugin.php文件
3.双击进入编辑模式,找到114行
原文件代码:
$code = $e->getCode();
if(('Mysql' == $type && 1050 == $code) ||
('SQLite' == $type && ('HY000' == $code || 1 == $code))) {
try {
$script = 'SELECT `lid`, `name`, `url`, `sort`, `image`, `description`, `user`, `order` from `' . $prefix . 'links`';
$installDb->query($script, Typecho_Db::READ);
return '检测到友情链接数据表,友情链接插件启用成功';
} catch (Typecho_Db_Exception $e) {
$code = $e->getCode();
if(('Mysql' == $type && 1054 == $code) ||
('SQLite' == $type && ('HY000' == $code || 1 == $code))) {
return Links_Plugin::linksUpdate($installDb, $type, $prefix);
}
throw new Typecho_Plugin_Exception('数据表检测失败,友情链接插件启用失败。错误号:'.$code);
}
} else {
throw new Typecho_Plugin_Exception('数据表建立失败,友情链接插件启用失败。错误号:'.$code);
}
4.复制以下代码:
$code = $e->getCode();
if(('Mysql' == $type && 1050 == $code) ||
('SQLite' == $type && ('HY000' == $code || 1 == $code))) {
try {
$script = 'SELECT `lid`, `name`, `url`, `sort`, `image`, `description`, `user`, `order` from `' . $prefix . 'links`';
$installDb->query($script, Typecho_Db::READ);
return '检测到友情链接数据表,友情链接插件启用成功';
} catch (Typecho_Db_Exception $e) {
$code = $e->getCode();
if(('Mysql' == $type && 1054 == $code) ||
('SQLite' == $type && ('HY000' == $code || 1 == $code))) {
return Links_Plugin::linksUpdate($installDb, $type, $prefix);
}
throw new Typecho_Plugin_Exception('数据表检测失败,友情链接插件启用失败。错误号:'.$code);
}
} else if('Mysql' == $type && '42S01' == $code){
/* 如果数据库存在 */
$script = 'SELECT `lid`, `name`, `url`, `sort`, `image`, `description`, `user`, `order` from `' . $prefix . 'links`';
$installDb->query($script, Typecho_Db::READ);
return '检测到友情链接数据表,友情链接插件启用成功';
} else {
throw new Typecho_Plugin_Exception('数据表建立失败,友情链接插件启用失败。错误号:'.$code);
}
5.鼠标框选114行至131行,粘贴进去,保存退出编辑,回到Typecho后台,点击插件。
6.点击启用。
7.提示检测到友情链接数据表,友情链接插件启用成功。
8.Typecho后台,点击内容管理-友情链接,进入编辑器,填写友链参数后点击下方蓝色编辑链接。
9.回到网站友链页面查看故障排除情况。
结语
解决故障的耐心和细心是必须的基本素养。