现象
要改宝塔面板里的站点名称。直接改数据库:
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。
改任何面板数据前,先确认「面板到底读哪个文件」。找错文件改十次也没用。
评论