现象

要改宝塔面板里的站点名称。直接改数据库:

sqlite3 /www/server/panel/data/default.db
update sites set name='example.com' where id=1;

查询确认写入成功,重启面板,界面上还是旧名字。

排查

把机器上所有带 sites 表的 db 找出来:

for db in /www/server/panel/data/*.db /www/server/panel/data/db/*.db; do
  n=$(sqlite3 "$db" "select count(*) from sites" 2>/dev/null)
  [ "$n" -gt 0 ] && echo "$db -> $n"
done

结果发现三个文件都有:

  • /www/server/panel/data/default.db —— 改了,没生效
  • /www/server/panel/data/db/default.db —— 改了,没生效
  • /www/server/panel/data/db/site.db —— 没改过,才是真正生效的

根因

新版宝塔做了数据库拆分,站点相关的数据统一放在 data/db/site.db,而 default.db 保留的是用户、配置等其他表。两个旧文件里也有空的 sites 表,所以看起来「像是对的」。

正确做法

python3 -c "
import sqlite3
c = sqlite3.connect('/www/server/panel/data/db/site.db')
c.execute('update sites set name=? where id=?', ('example.com', 1))
c.commit()
"

改完重启面板:bt restart。

改任何面板数据前,先确认「面板到底读哪个文件」。找错文件改十次也没用。

← 返回博客

评论

发表回复

您的邮箱地址不会被公开。必填项已用 *