MENU

Typecho友链插件启用错误

• 2019 年 12 月 28 日 • Typecho

今天晚上咋地也睡不着了,想着把友链弄一下,后来还是打算用插件吧,省事,谁知道启动插件提示错误信息:数据表建立失败,友情链接插件启用失败。错误号:42S01,想着可能就是原来用友人C的时候插件写入了数据库,导致了数据库表重复,只能修改数据库表了。

  1. 进数据库把 typecho_links 这张表备份到本地(或者把整个数据库备份);
  2. 备份好了之后,把typecho_links这张表删除;
  3. 再进入网站后台,重新启用插件(这时候不报错了);
  4. 最后把刚刚备份在本地的typecho_links表重新导入到数据库里。

后来百度了一下,还有一种简单的解决办法,加个判断语句就行了

$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);
    }

我是直接删除了数据库的typecho_links表,此问题完美解决。

最后编辑于: 2020 年 03 月 26 日
0:00