一直使用宝塔来管理服务器网站,最近在创建新的网站突然新增不了,报了一堆错误,忘记截图了。。。。。
去了官网找发帖找求助,发现刚注册还要等半小时。。。。
工具在文末
干脆自己动手
先去系统命令行输入bt 选22 结果出来报错日志:
File "class/db.py", line 419, in add
result = self.__DB_CONN.execute(sql,self.__to_tuple(param))
sqlite3.DatabaseError: database disk image is malformed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/www/server/panel/BTPanel/__init__.py", line 2533, in publicObject
res = run_obj.run(toObject, defs, get)
File "/www/server/panel/BTPanel/__init__.py", line 2480, in run
result = getattr(toObject, get.action)(get)
File "class/panelSite.py", line 808, in AddSite
public.M('domain').add('pid,name,port,addtime', (get.pid, main_domain, self.sitePort, public.getDate()))
File "class/db.py", line 426, in add
raise public.PanelError("数据库插入出错:" + "error: " + str(ex))
public.PanelError: 面板运行时发生错误: 数据库插入出错:error: database disk image is malformed
查了一下,sqlite 表文件出错了
bt后台使用python代码写的,根据上面提示的日志异常栈,找相关的代码,最后找到对应的的sqlite db文件,我这里对应的数据库文件是site.db
db文件损坏了,网上找了一堆解决方案,我执行下来有效的是,使用工具从损坏的db文件里面到处sql,然后新建一个db文件,把对应的sql导入到db里面
使用修复工具
执行命令:
sqlite> .open site.db
sqlite> .output tmp1.sql
sqlite> .dump
sqlite> .quit
得到sql
有了sql文件,一切就好办了,创建一个新的db数据库文件
找一个sqlite3 的gui工具,我这边使用的是idea自带的,然后链接上面创建的site2.db,执行导出来的sql文件
执行完成后最后上传到宝塔覆盖原来的db文件,在宝塔上重新操作创建文件,一切正常